Skip to main content

Kotlin Parcelable Array Objects Send To Activity

We know that IPC (Inter Process Communication) between the activity is an extremely important part of any application development. We often required that we need to send some data to other activity. For example, we may be required to send an array of data, data could be an Integer, String, Long, Double, Float or any other custom data objects. So, In this example, we are going to learn how to implement the Kotlin Parcelable Array object to send the data from one activity to second activity.

What is Parcel?


The parcel class is designed as a high-performance IPC transport. A Parcel can contain both flattened data that will be unflattened on the other side of the IPC, and references to live IBinder objects that will result in the other side receiving a proxy IBinder connected with the original IBinder in the Parcel.

Create Kotlin Parcelable Array Objects


Parcelable is API for placing the arbitrary objects into the Parcel. In Actual in android app development, Parcelable is an interface which needs to be implemented for creating a Parcel for sending the objects from one process to another process.

We will implement or override the following method to implement the Parcelable Objects into the Kotlin.
describeContents() >Describe the kinds of objects contained within this Parcelable instance.
writeToParcel(Parcel dest, int flags) > Create the Parcel of the object.
CREATOR > We also need to create a not-null static method called CREATOR which implements the Parcelable.Creator

Let's create a class like given below.
class MyData(val FirstName:String,val LastName:String,val Age:Int)  {
}

If you are using the Android Studio it will provide the option to generate and implement the Parcelable to any of the class.

Kotlin Parcelable

 

 

 

It will generate the complete Parcelable code as given below.
package com.nplix.kotlinparcelableexample

import android.os.Parcel
import android.os.Parcelable

class MyData(val FirstName:String,val LastName:String,val Age:Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readString(),
parcel.readInt()) {
}

override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(FirstName)
parcel.writeString(LastName)
parcel.writeInt(Age)
}

override fun describeContents(): Int {
return 0
}

companion object CREATOR : Parcelable.Creator<MyData> {
override fun createFromParcel(parcel: Parcel): MyData {
return MyData(parcel)
}

override fun newArray(size: Int): Array<MyData?> {
return arrayOfNulls(size)
}
}


}

In above example, we get the code using companion block. This block of code is similar to the static method of the Java. We can access the companion block by referring the name of the class. But for making it a real static method to JVM we need to add the @JvmField annotation.
companion object {
@JvmField
val CREATOR = object : Parcelable.Creator<MyData>
{
override fun createFromParcel(parcel: Parcel): MyData {
return MyData(parcel)
}

override fun newArray(size: Int): Array<MyData?> {
return arrayOfNulls(size)
}
}
}

Create Bundle to send the data to second Activity


As a sample, we are adding two item to list using code given below.
//create an array of MyData
var data:MutableList<MyData> = ArrayList<MyData>()
var data1:MyData =MyData("Pawan","Kumar",30)
var data2:MyData =MyData("Rahul","Sharma",32)
data.add(data1)
data.add(data2)

Send the above bundle on button click to the second activity.
//send the data to second Activity
var dataSend:Button=findViewById(R.id.button)
dataSend.setOnClickListener {
var intent:Intent=Intent(applicationContext,SecondActivity::class.java)
intent.putParcelableArrayListExtra("data",data as java.util.ArrayList<out Parcelable>)
startActivity(intent)
}

 

Read the Array Object data into the second activity in Kotlin


In second activity we just have to retrieve the intent and get the Parcelable array from this intent.

retrieve the intent using the code as given below.
var intent: Intent =intent

In Java, we use the getIntent() method to get the intent but here we can just use the intent.
var list:List<MyData> = ArrayList<MyData>()
list=intent.getParcelableArrayListExtra("data")

Using For Loop to iterate all list data in Kotlin


We can use the for loop like given below to display the content of the list, which we get from Main Activity.
for (item in list){
Log.d("DataMainActivity","Hello "+item.FirstName+" "+item.LastName + " your age is " +item.Age)
}

Unlike Java where we use the index to retrieve the list item in Kotlin, we can directly refer the item from the list and use it like given above.

If you would like to check the Java version of this tutorial you can check the  Send Array Of Objects To Activity – Android Parcelable

Comments

  1. It is a proficient article that you have shared here about parcel. I got some unique and valuable information from your article. Thankful to you for sharing this article here.
    Parcel Audit

    ReplyDelete
  2. You are providing such an informative article here. You have described everything which is easily understandable to everyone. Keep sharing this kind of articles, Thank you.UPS Audit

    ReplyDelete
  3. There is a brand new silicone-primarily based totally paint from International Paints that once implemented to the hull reduces quantity of resistance withinside the water sufficiently to bring about a three to 5�crease in gasoline intake. A comparable coating for the propellers additionally has been established to growth gasoline efficiency.Shipping from china

    ReplyDelete
  4. You have a genuine capacity to compose a substance that is useful for us. You have shared an amazing post about FedEx Contract Negotiation for us .Much obliged to you for your endeavors in sharing such information with us.

    ReplyDelete
  5. I would like to say this is a well-informed article as we have seen here. Your way of writing is very impressive and also it is a beneficial article for us. Thanks for sharing an article like this.send parcel to usa from india

    ReplyDelete
  6. Really appreciate this wonderful as we have seen here. This is a great source to enhance knowledge for us. Thankful to you for sharing an article like this.india to Germany package shipping

    ReplyDelete

Post a Comment

Popular posts from this blog

Flutter How to Start Android Activity from Flutter View

Flutter and Dart is an excellent combination for creating the UI, but for accessing the platform-specific service we need to open platform-specific activity. So lets in this article we will explore how to start an android activity and access the service from Flutter View. Create a Project for this Android Activity Flutter View Demo Create a Project From File menu select the New Flutter Project Enter the project name Select the AndroidX support and click on next After the above, we step click on Finish We will have the following project structure created. Create the Second Activity in Android Just go to the android folder and open it in separate windows. We will have the following project structure. Create the Activity Just right-click on the Kotlin folder and create a blank activity from the menu. If you create the activity then you may be required to upgrade the Gradle and do some import. So Just click on update and wait for the project s

WordPress Android App with REST API And Retrofit

Retrofit is the library which converts your JSON data into Java object. In this tutorial, we will learn about how to implement the Retrofit to create a WordPress Mobile App. As we all know, WordPress is the one of the biggest CMS (Content Management System) of the world. Wordpress full fill the requirements for all most every type of the website. So, in this tutorial, I am going to learn how to create an Android App using the WordPress REST API and Retrofit. What is Retrofit? If you want to know about Retrofit, I would like to give you just a simple one-line explanation of the Retrofit. It is a library which converts your REST HTTP request to Java interface. We will learn how we can do all these stuff using some very simple steps. Further, you can check the Retrofit Library here . So, In this tutorial, we will use the Retrofit to retrieve all post and there except ( A short Description of Post) form a WordPress website. Prerequisite for using the Retrofit for WordPress Android App Ther

How to Read and Write JSON data in Kotlin with GSON

Kotlin is now official language for Android development and it is well supported in Android Studio. So here in this tutorial, we are going to learn about how to read and write JSON data in Kotlin using GSON. If you would like to learn the java version of this tutorial check out the last tutorial " How to Read and Write JSON data using GSON ". Introduction In this tutorial, we will write two methods. In the first method, we will create a JSON file and in second method we will read the file and print in a text box.  If you like to know more about the basic entity of JSON you can check out Basic JSON entity here . What is JSON? JSON stands for J ava S cript O bject N otation JSON is a lightweight data-interchange format It is "self-describing" and easy to understand JSON is language independent and can we used in any language JSON Syntax Rules Data is in name/value pairs Data is separated by commas Curly braces hold objects Square brackets hold