数组列表 >在Parcelable对象kotlin中

问题描述 投票:2回答:1

字符串数组的数组需要包含在一起。对象就是这样

data class Foo (
    @SerializedName("bar") val bar: ArrayList<ArrayList<String>>,
)

它并不一定需要是ArrayList。数组也可以使用。

data class Foo (
    @SerializedName("bar") val bar: Array<Array<String>>,
)

哪个更容易映射这个json数据

{
  "bar": [
    ["a", "b"],
    ["a1", "b2", "c2"],
    ["a3", "b34", "c432"]
  ]
}

使用kotlin实验qazxsw poi在使用proguard编译时崩溃应用程序

如何在“writeToParcel”中编写并在“构造函数”中读取?

Parcelize
android arrays arraylist kotlin parcelable
1个回答
1
投票

你不能直接为data class Foo ( @SerializedName("bar") val bar: ArrayList<ArrayList<String>>, ) : Parcelable { constructor(source: Parcel) : this( // ????? ) override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) { // ????? } } Parcelable直接创建List,所以一个解决方案是将你想要的List的一个子类作为List并将其作为最终列表类型。怎么样?退房如下:

让我们首先创建我们的内部String类List,如下所示:

Parcelable

我们在这里所做的是创建我们的class StringList() : ArrayList<String>(), Parcelable { constructor(source: Parcel) : this() { source.createStringArrayList() } override fun describeContents() = 0 override fun writeToParcel(dest: Parcel, flags: Int) { dest.writeStringList(this@StringList) } companion object { @JvmField val CREATOR: Parcelable.Creator<StringList> = object : Parcelable.Creator<StringList> { override fun createFromParcel(source: Parcel): StringList = StringList(source) override fun newArray(size: Int): Array<StringList?> = arrayOfNulls(size) } } } parcelable,以便我们可以在任何端点使用它。

因此,最终数据类将具有以下实现:

ArrayList<String>

注意:这是基于O.P.的简单实现,您可以根据您的要求进行任何自定义。

© www.soinside.com 2019 - 2024. All rights reserved.