Как прочитать MutableList <String>для Parcelable? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть класс User, который реализует интерфейс Parcelable.User также имеет свойство типа MutableList<String>.Я хотел бы знать, как читать / писать этот тип для 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() фактически не возвращает MutableList<String>.Возвращает только Unit / void.Следовательно, он выдает ошибку компиляции.

Как правильно это сделать?

1 Ответ

0 голосов
/ 29 мая 2019

Использование createStringArrayList(). readStringList предназначен для повторного использования одного List вместо создания нового каждый раз, это не то, что вам нужно.

...