如何包含哈希映射的类对象?科特林

时间:2018-02-20 14:09:56

标签: java android kotlin

我正在尝试使用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传递数据。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你的代码实际上很好。只是TODO在这种情况下不起作用。用实际代码替换TODO,它应该可以工作。

例如:

constructor(parcel: Parcel) : this(
            parcel.readString(),
            hashMapOf<String, Any>()) {