I want to pass a data class (that contains list of int as a property) to other activity through Bundle and therefore i need to add Parcelable implementation to my data class. any idea about how to parcel this property?
data class Test(val id: Long, val files: List<Int>?) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readLong(),
TODO("files"))
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeLong(id)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Test> {
override fun createFromParcel(parcel: Parcel): Test {
return Test(parcel)
}
override fun newArray(size: Int): Array<Test?> {
return arrayOfNulls(size)
}
}
You can write a list of integers as
int[]
:Make sure you use the same data structure when reading back:
You could make it more efficient using extension functions by skipping the array representation: