如何将 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
而不是每次都创建一个新的,这不是您想要的。
我有一个 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
而不是每次都创建一个新的,这不是您想要的。