要实现 Parcelable 并传递 NNBBUUModel 列表,可以按照以下步骤进行:
模型类实现 Parcelable
Kotlin
import android.os.Parcel
import android.os.Parcelable
import com.google.gson.annotations.SerializedName
open class NNBBUUModel() : Parcelable {
@SerializedName("Tid")
var tid: Int? = null
@SerializedName("Name")
var name: String? = null
constructor(parcel: Parcel) : this() {
tid = parcel.readValue(Int::class.java.classLoader) as? Int
name = parcel.readString()
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeValue(tid)
parcel.writeString(name)
}
override fun describeContents(): Int = 0
companion object CREATOR : Parcelable.Creator<NNBBUUModel> {
override fun createFromParcel(parcel: Parcel): NNBBUUModel {
return NNBBUUModel(parcel)
}
override fun newArray(size: Int): Array<NNBBUUModel?> {
return arrayOfNulls(size)
}
}
}
传递列表
在第一个页面,使用 Intent 传递数据:
Kotlin
val toPayList: ArrayList<NNBBUUModel> = arrayListOf(
NNBBUUModel().apply { tid = 1; name = "Item1" },
NNBBUUModel().apply { tid = 2; name = "Item2" }
)
val intent = Intent(this, SecondActivity::class.java)
intent.putParcelableArrayListExtra("KEY_SELECTED", toPayList)
startActivity(intent)
接收列表
在第二个页面,接收数据:
Kotlin
val receivedList: ArrayList<NNBBUUModel>? = intent.getParcelableArrayListExtra("KEY_SELECTED")
这样就可以通过 Parcelable 传递 NNBBUUModel 列表到另一个页面。