簡體   English   中英

如何解析列表<Int>在科特林?

[英]How can I parce a List<Int> in Kotlin?

我正在嘗試解析一個 Int 列表。

我試過這個解決方案: 如何用 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)
    }
}

為什么不嘗試@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

而已。

有多種向/從包裹中寫入/讀取列表的方法,這是一種簡單的解決方案。

首先,使用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()
)

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM