我正在尝试对Int列表进行修饰。
我已经尝试过以下解决方案:How to parcel List<Int> with kotlin,但是没有用
data class Pizza(
var ingredients: ArrayList<Int>,
val name: String,
val imageUrl: String
) : Parcelable {
constructor(parcel: Parcel) : this(
TODO("ingredients"),
parcel.readString(),
parcel.readString()) {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(name)
parcel.writeString(imageUrl)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Pizza> {
override fun createFromParcel(parcel: Parcel): Pizza {
return Pizza(parcel)
}
override fun newArray(size: Int): Array<Pizza?> {
return arrayOfNulls(size)
}
}
答案 0 :(得分:0)
您为什么不尝试@Parcelize
! Kotlin的另一个很酷的功能。
在gradle中启用kotlin实验
//Make sure you have adeed
apply plugin: ‘kotlin-android-extensions’
androidExtensions {
experimental = true
}
然后
@Parcelize
data class Pizza(
var ingredients: ArrayList<Int>,
val name: String,
val imageUrl: String
) : Parcelable
就这样。
答案 1 :(得分:0)
有多种方法可以在包裹中写入/读取列表,这是一种简单的解决方案。
首先,使用writeList将清单写到包裹中
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeList(ingredients)
parcel.writeString(name)
parcel.writeString(imageUrl)
}
然后,使用readArrayList从包裹中读取列表。
constructor(parcel: Parcel) : this (
parcel.readArrayList(Int::class.java.classLoader) as ArrayList<Int>,
parcel.readString(),
parcel.readString()
)
希望有帮助。