我正在尝试使用intent.putParcelableArrayListExtra
将自定义数组列表从一个活动传递到另一个活动。
所以我在我的类对象中实现了Parcelable
:
class AudioModel(audioTitle:String,map:HashMap<String, Any>):Parcelable{
var title:String=""
var artistName:String=""
var urlLink:String=""
init{
title=audioTitle
urlLink=map["url"].toString()
artistName=map["artist"].toString()
}
}
在添加parcelable实现后,我有:
class AudioModel(audioTitle: String, map: HashMap<String, Any>) : Parcelable {
var title: String = ""
var artistName: String = ""
var urlLink: String = ""
constructor(parcel: Parcel) : this(
TODO("audioTitle"),
TODO("map")) {
title = parcel.readString()
artistName = parcel.readString()
urlLink = parcel.readString()
}
init {
title = audioTitle
urlLink = map["url"].toString()
artistName = map["artist"].toString()
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(title)
parcel.writeString(artistName)
parcel.writeString(urlLink)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<AudioModel> {
override fun createFromParcel(parcel: Parcel): AudioModel {
return AudioModel(parcel)
}
override fun newArray(size: Int): Array<AudioModel?> {
return arrayOfNulls(size)
}
}
}
我的问题是我在构造函数中收到警告
无法访问的代码消息
因此我无法使用intent.putParcelableArrayListExtra
传递数据。有谁知道如何解决这个问题?
答案 0 :(得分:1)
你的代码实际上很好。只是TODO在这种情况下不起作用。用实际代码替换TODO,它应该可以工作。
例如:
constructor(parcel: Parcel) : this(
parcel.readString(),
hashMapOf<String, Any>()) {