[英]How can I parce a List<Int> in Kotlin?
I'm trying to parce a list of Int.我正在尝试解析一个 Int 列表。
I've tried this solution: How to parcel List<Int> with kotlin , but not worked我试过这个解决方案: 如何用 kotlin 打包 List<Int> ,但没有用
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)
}
}
Why don't you just try @Parcelize
! 为什么不尝试@Parcelize
呢? Another cool feature of Kotlin. Kotlin的另一个很酷的功能。
Enable kotlin experimental in gradle 在Gradle中启用Kotlin实验
//Make sure you have adeed
apply plugin: ‘kotlin-android-extensions’
androidExtensions {
experimental = true
}
Then 然后
@Parcelize
data class Pizza(
var ingredients: ArrayList<Int>,
val name: String,
val imageUrl: String
) : Parcelable
Thats it. 而已。
There are several ways to write/read a list to/from a parcel, here is a simple solution. 有多种向/从包裹中写入/读取列表的方法,这是一种简单的解决方案。
First, use writeList to write a list into a parcel 首先,使用writeList将清单写入包裹
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeList(ingredients)
parcel.writeString(name)
parcel.writeString(imageUrl)
}
Then, use readArrayList to read the list from the parcel. 然后,使用readArrayList从包裹中读取列表。
constructor(parcel: Parcel) : this (
parcel.readArrayList(Int::class.java.classLoader) as ArrayList<Int>,
parcel.readString(),
parcel.readString()
)
Hope it helps. 希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.