在Kotlin中实现Parcelable for List<data class>(子列表)的方法如下:
data class Data(val name: String, val age: Int) : Parcelable {
// 实现Parcelable接口的必要方法
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(name)
parcel.writeInt(age)
}
override fun describeContents(): Int {
return 0
}
// 伴生对象,用于创建Parcelable实例
companion object CREATOR : Parcelable.Creator<Data> {
override fun createFromParcel(parcel: Parcel): Data {
return Data(parcel.readString(), parcel.readInt())
}
override fun newArray(size: Int): Array<Data?> {
return arrayOfNulls(size)
}
}
}
data class ParentData(val name: String, val childList: List<Data>) : Parcelable {
// 实现Parcelable接口的必要方法
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(name)
parcel.writeTypedList(childList)
}
override fun describeContents(): Int {
return 0
}
// 伴生对象,用于创建Parcelable实例
companion object CREATOR : Parcelable.Creator<ParentData> {
override fun createFromParcel(parcel: Parcel): ParentData {
return ParentData(parcel.readString(), parcel.createTypedArrayList(Data.CREATOR))
}
override fun newArray(size: Int): Array<ParentData?> {
return arrayOfNulls(size)
}
}
}
val childList = listOf(Data("Alice", 25), Data("Bob", 30))
val parentData = ParentData("Parent", childList)
val parcel = Parcel.obtain()
parentData.writeToParcel(parcel, 0)
parcel.setDataPosition(0) // 重置Parcel的位置
val createdParentData = ParentData.CREATOR.createFromParcel(parcel)
这样,你就可以在Kotlin中实现Parcelable for List<data class>(子列表)了。在实际应用中,你可以根据需要将这些数据类和方法进行封装,以便更好地组织和管理你的代码。
关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议你参考腾讯云的文档和官方网站,了解他们提供的云计算服务和相关产品。
领取专属 10元无门槛券
手把手带您无忧上云