您要在Android APP应用程序中创建可分配的数据对象以从activityA传递到activityB。
我的对象是传递所有数据,除了可用的服务类arraylist
dataclassavailableservice (valid : int,
val name :字符串,
val description :字符串,
val price :双精度,
val currency :字符串,
val imageurl : string } :可编程{
组件对象{
@jvmfield@suppress('unused”) ) ) ) ) ) ) ) ) ) ) ) ) ) )。
val creator=create parcel {可用服务(it ) }
}
保护性建构器(parcel in : parcel ) :this ) Parcelin.readint )、
parcelIn.readString ()、
parcelIn.readString ()、
parcelIn.readDouble ()、
parcelIn.readString ()、
parcelIn.readString () )
overridefunwritetoparcel (dest : parcel?flags: Int ) {
est? writeint(id ) )。
est? writestring(name )。
est? writestring(description )。
est? writedouble(price )。
est? writestring(currency )。
est? writestring (图像)。
}
override fun describeContents ()=0
}
上面是可用的服务类,下面是Trip。 那个有arraylist的可用服务。 我在调试中观察了那个。 那个成功写了arraylist。 由于某种原因,有读取数据的问题。
dataclasstrip (valid :字符串,
val status :字符串,
valorderedservices 3360阵列列表(: parcelable {
组件对象{
@jvmfield@suppress('unused”) ) ) ) ) ) ) ) ) ) ) ) ) ) )。
val creator=create parcel { trip (it ) }
}
protected constructor (parcel in : parcel ) :this ) Parcelin.readstring,
parcelIn.readString ()、
arrayListOf ().apply {
parcel in.read ArrayList (订单服务: class.Java.class loader ) )。
}
)
overridefunwritetoparcel (dest : parcel?flags: Int ) {
est? writestring(id ) )。
est? writestring(status )。
est? write list (有序服务) )。
}
override fun describeContents ()=0
}
万一有人想知道CREATOR的乐趣,代码如下。
inline fun createParcel (
crossinlinecreatefromparcel : (parcel )- T? ) : Parcelable.Creator=
object : Parcelable.Creator {
overridefuncreatefromparcel (source : parcel ) : T?=createfromparcel (源)
overridefunnewarray (size : int ) : array=arrayofnulls (size ) ) ) ) ) ) ) ) ) ) )。
}
再次,写成功了,但是读失败了。 我得到了空的arraylist。 我觉得那个部分是错误的:
arrayListOf ().apply {
parcel in.read ArrayList (订单服务: class.Java.class loader ) )。
}
有不同的读取/写入方法arraylist吗? 写错了吗? 读错了吗?
在此首先感谢您的协助!