我为我的类添加了Parcelable实现并获取此代码:
data class Category (val name:String, var factors:ArrayList<String>):Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
TODO("factors")) {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(name)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Category> {
override fun createFromParcel(parcel: Parcel): Category {
return Category(parcel)
}
override fun newArray(size: Int): Array<Category?> {
return arrayOfNulls(size)
}
}
}
据我所知,我应该编写从ArrayList读取数据的方法。我试过用
parcel.readArrayList()
但无法理解,如何将String作为ClassLoader插入。请帮我理解,如何使这个对象Parcelable。
答案 0 :(得分:0)
在构造函数中使用以下内容:
parcel.createStringArrayList()
并在writeToParcel
内:
parcel.writeStringList(this.mTest)
只是一个侧节点:如果您正在使用Android Studio,只需让它使用Parcelable代码生成器插件生成Parcelable。
答案 1 :(得分:0)
阅读Parcelable
segments=new ArrayList<>();
in.readTypedList(segments,Segments.CREATOR);
Multi = in.readString();
写作
dest.writeTypedList(segments);
dest.writeString(Multi);
它就像一个魅力