kotlin parcelable
Step 1: Define a data class
data class MyDataClass(val id: Int, val name: String)
Step 2: Implement the Parcelable interface
import android.os.Parcel
import android.os.Parcelable
data class MyDataClass(val id: Int, val name: String) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readInt(),
parcel.readString() ?: ""
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeInt(id)
parcel.writeString(name)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<MyDataClass> {
override fun createFromParcel(parcel: Parcel): MyDataClass {
return MyDataClass(parcel)
}
override fun newArray(size: Int): Array<MyDataClass?> {
return arrayOfNulls(size)
}
}
}
Step 3: Use Parcelable in an activity or fragment
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Create an instance of MyDataClass
val myData = MyDataClass(id = 1, name = "Example")
// Create a Bundle and put the Parcelable object into it
val bundle = Bundle()
bundle.putParcelable("myDataKey", myData)
// Retrieve the Parcelable object from the Bundle
val retrievedData = bundle.getParcelable<MyDataClass>("myDataKey")
// Access the properties of the retrieved object
val retrievedId = retrievedData?.id
val retrievedName = retrievedData?.name
}
}