如何将 MutableList<String> 读取为 Parcelable?

How to read a MutableList<String> to Parcelable?

我有一个 class User 实现了 Parcelable 接口。 User 也有一个 属性 类型 MutableList<String>。我想知道如何将 read/write 这种类型用于 Parcelable

到目前为止,这是我的代码

data class User(
    val contactNumber: String,
    val email: String,
    val fullName: String,
    var instanceToken: String,
    val isAdmin: Boolean,
    val isValid: Boolean,
    val organization: String,
    val registrationTokens: MutableList<String>,
    val uid: String,
    val unitNumber: String
) : Parcelable {

    constructor(source: Parcel) : this(
        source.readString() ?: "",
        source.readString() ?: "",
        source.readString() ?: "",
        source.readString() ?: "",
        source.readBoolean(),
        source.readBoolean(),
            source.readString() ?: "",
            source.readStringList(),
            source.readString() ?: "",
        source.readString() ?: ""
    )

    override fun writeToParcel(dest: Parcel?, flags: Int) {
        dest?.let {
            it.writeString(contactNumber)
            it.writeString(email)
            it.writeString(fullName)
            it.writeString(instanceToken)
            it.writeBoolean(isAdmin)
            it.writeBoolean(isValid)
            it.writeString(organization)
            it.writeStringList(registrationTokens)
            it.writeString(uid)
            it.writeString(unitNumber)
        }

    }

对于写入部分,有一个writeStringList()方法,很方便。但是对于读取部分,提供的readStringList()实际上并不是returnMutableList<String>。它只有 returns Unit / void。因此,它吐出一个编译错误。

这样做的正确方法是什么?

使用createStringArrayList()readStringList 旨在重复使用单个 List 而不是每次都创建一个新的,这不是您想要的。