如何从Kotlin中的getParcelableArrayListExtra <parcelable>获取数据

时间:2019-05-11 20:15:40

标签: kotlin

如何从Kotlin中的getParcelableArrayListExtra获取数据?

我有一个称为FoodParceable的Parceable数据类

data class FoodParceable(val idCover: Int, val name: String, val 
price: Double):Parcelable {
constructor(parcel: Parcel) : this(
    parcel.readInt(),
    parcel.readString(),
    parcel.readDouble()
)

override fun writeToParcel(parcel: Parcel, flags: Int) {
    parcel.writeInt(idCover)
    parcel.writeString(name)
    parcel.writeDouble(price)
}

override fun describeContents(): Int {
    return 0
}

companion object CREATOR : Parcelable.Creator<FoodParceable> {
    override fun createFromParcel(parcel: Parcel): FoodParceable {
        return FoodParceable(parcel)
    }

    override fun newArray(size: Int): Array<FoodParceable?> {
        return arrayOfNulls(size)
    }
}

}

在当前活动A中,填写arrayListParceable并将其发送到活动B。

    val arrayListParceable = ArrayList<FoodParceable>()
    for (Food in listFood) {

        arrayListParceable.add(FoodParceable(R.mipmap.ic_food_meat, "Carne", 9.99))
        arrayListParceable.add(FoodParceable(R.mipmap.ic_food_meat, "Vegetales", 29.99))
        arrayListParceable.add(FoodParceable(R.mipmap.ic_food_meat, "Frutas", 39.99))
    }
    val intent = Intent()
    intent.putParcelableArrayListExtra(LIST_PRODUCT,arrayListParceable)
    activity?.setResult(Activity.RESULT_OK, intent)

在活动B的列表项中获取值时,无法输入其内容。

if(resultCode == Activity.RESULT_OK){
                if(data != null){
                    val listItems = data.getParcelableArrayListExtra<Parcelable>(LIST_PRODUCT)
                    listItems[0]. //ERROR

                }
            }

我是Kotlin的新手,谢谢您的评论。问候

1 个答案:

答案 0 :(得分:0)

您必须为Kotlin提供有关对象列表类型的更多信息。试试这个:

val listItems : ArrayList<FoodParceable> = data.getParcelableArrayListExtra(LIST_PRODUCT)