java parcelable list_Kotlin parcelable和arrayList of parcelables

我正在尝试编写一个可分配的数据对象,以便在我的Android应用程序中从 activityA 传递到 activityB .

我的对象是传递所有数据,除了我的可用服务类 arraylist

data class AvailableService(val id: Int,

val name: String,

val description: String,

val price: Double,

val currency: String,

val imageUrl: String) : Parcelable {

companion object {

@JvmField @Suppress("unused")

val CREATOR = createParcel { AvailableService(it) }

}

protected constructor(parcelIn: Parcel) : this(parcelIn.readInt(),

parcelIn.readString(),

parcelIn.readString(),

parcelIn.readDouble(),

parcelIn.readString(),

parcelIn.readString())

override fun writeToParcel(dest: Parcel?, flags: Int) {

dest?.writeInt(id)

dest?.writeString(name)

dest?.writeString(description)

dest?.writeDouble(price)

dest?.writeString(currency)

dest?.writeString(imageUrl)

}

override fun describeContents() = 0

}

上面是可用的 serviceClass ,接下来我有Trip,它持有 arraylist 的 AvailableService ..我在调试中观察到这一点,它成功写了 arraylist ,由于某种原因我有读数据的问题 .

data class Trip(val id: String,

val status: String,

val orderedServices: ArrayList) : Parcelable {

companion object {

@JvmField @Suppress("unused")

val CREATOR = createParcel { Trip(it) }

}

protected constructor(parcelIn: Parcel) : this(parcelIn.readString(),

parcelIn.readString(),

arrayListOf().apply {

parcelIn.readArrayList(OrderedService::class.java.classLoader)

}

)

override fun writeToParcel(dest: Parcel?, flags: Int) {

dest?.writeString(id)

dest?.writeString(status)

dest?.writeList(orderedServices)

}

override fun describeContents() = 0

}

万一有人想知道CREATOR的乐趣是什么,代码如下:

inline fun createParcel(

crossinline createFromParcel: (Parcel) -> T?): Parcelable.Creator =

object : Parcelable.Creator {

override fun createFromParcel(source: Parcel): T? = createFromParcel(source)

override fun newArray(size: Int): Array = arrayOfNulls(size)

}

再次,写作成功,但阅读失败,我得到一个空的 arraylist ..我认为那部分是错误的:

arrayListOf().apply {

parcelIn.readArrayList(OrderedService::class.java.classLoader)

}

是否有不同的读/写方式 arraylist ?我写错了吗?读错了吗?

在此先感谢您的帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值