android - 如何在 Kotlin 中初始化 Array<List<Model>>?

标签 android kotlin expandablelistview expandablelistadapter

我有一个来自 REST API 的 JSON 字符串,我将其绑定(bind)到 List<CategoryDO> 中目的。我将所有类别/子类别数据放入此列表对象 List<CategoryDO>但我不知道如何将这些数据中的子类别分成 Array<List<CategoryDO>>格式。

如何将子类别列表添加到 Array<List<CategoryDO>>目的?我如何声明和初始化Array<List<CategoryDO>>在 Kotlin ?

所有类别均应位于 List<CategoryDO> 中格式和 Array<List<CategoryDO>> 中的所有子类别格式。

例如:

List<CategoryDO of Cat-1, CategoryDO of cat-2, ... etc>

Array<List<CategoryDO of SubCat-1 of Cat-1, CategoryDO of SubCat-2 of Cat-1>>, List<CategoryDO of SubCat-12 of Cat-2, CategoryDO of SubCat-22 of Cat-2>>, ...etc>>

CategoryDO 数据类:

data class CategoryDO(  @SerializedName("Id")
                    @Expose
                    var id: Long? = null,
                    @SerializedName("Name")
                    @Expose
                    var name: String? = null,
                    @SerializedName("SubCategories")
                    @Expose
                    var subCategories: List<CategoryDO>? = null)

实际上,我需要将这个单独的类别/子类别的内容传递给 CategoryAdapter类。

CategoryAdapter类(class)样本:

class CategoryAdapter : BaseExpandableListAdapter {
private var groupItem: List<CategoryDO>
private var contentItem: Array<List<CategoryDO>>
private var context: Context
private var imageOnClickListener: View.OnClickListener

constructor(context: Context, groupItem: List<CategoryDO>, contentItem: Array<List<CategoryDO>>, imageOnClickListener: View.OnClickListener) {
        this.groupItem = groupItem
        this.contentItem = contentItem
        this.context = context
        this.imageOnClickListener = imageOnClickListener
    }
  .
  .
  .
}

最佳答案

如果您需要转换List<CategoryDO>Array<List<CategoryDO>>其中内部列表是每个 CategoryDO 的子类别列表,您可以映射原始列表并将结果转换为数组...

// Given
val categories: List<CategoryDO> = TODO()

val allSubCats: Array<List<CategoryDO>> = 
    categories.map { it. subCategories }.toTypedArray()

关于android - 如何在 Kotlin 中初始化 Array<List<Model>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50292416/

相关文章:

Android Gradle 风格的语言支持少于 Main

Android:按数据模型中的名称对 ListView 进行排序

android - 如果在将数据发布到服务器并等待服务器响应后网络不可用,HTTP setReadTimeOut 可以工作

kotlin - Java 类的静态扩展函数

android - 获取第一组Expandable ListView的View句柄

android - ExpandableListView 组 View 展开默认

java - 可扩展 ListView 列表的大小不会增加以匹配 Android 中的文本长度

android - 如何以编程方式更改选项卡指示器颜色

android - 以编程方式将 MaterialButton 样式设置为 TextButton

Android Jetpack Compose 尝试对齐框内的文本