You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何声明初始化Array<List<CategoryDO>>并分离分类子分类

解决Kotlin中分类与子分类数据分离适配的问题

针对你遇到的把分类和子分类分离并适配到CategoryAdapter的问题,我来给你拆解步骤和代码示例:

1. 如何将子分类列表添加到Array<List<CategoryDO>>对象中?

核心思路就是遍历主分类列表,提取每个主分类对应的子分类集合,再把这些集合转换成Array格式。

假设你已经通过Retrofit或者Gson等工具把API返回的JSON解析成了List<CategoryDO>(包含层级结构的完整分类数据),接下来只需要:

  • 遍历这个主分类列表,逐个取出每个分类的subCategories属性
  • 把所有子分类集合收集成一个List<List<CategoryDO>>
  • 最后调用toTypedArray()方法把这个List转换成Array<List<CategoryDO>>

2. 如何在Kotlin中声明并初始化Array<List<CategoryDO>>?

在Kotlin里,你可以直接通过主分类列表的映射操作来初始化这个数组,不需要手动逐个添加。当然也可以初始化空数组做备用场景。

完整代码示例

假设你已经完成了JSON解析,得到了mainCategories: List<CategoryDO>,接下来的处理代码如下:

// 1. 解析API返回的JSON,得到包含子分类的主分类列表(这里替换成你的实际解析逻辑)
val mainCategories: List<CategoryDO> = yourApiService.getCategories().execute().body() ?: emptyList()

// 2. 提取所有子分类,转换成Array<List<CategoryDO>>
val subCategoriesArray: Array<List<CategoryDO>> = mainCategories.map { category ->
    // 处理subCategories为null的情况,默认返回空列表避免空指针
    category.subCategories ?: emptyList()
}.toTypedArray()

// 3. 初始化CategoryAdapter
val adapter = CategoryAdapter(
    context = this,
    groupItem = mainCategories,
    contentItem = subCategoriesArray,
    imageOnClickListener = yourClickListener // 替换成你的实际点击事件
)

补充说明

  • 用map操作是因为它能简洁地遍历主分类列表,把每个元素转换成我们需要的子分类集合
  • 加入category.subCategories ?: emptyList()是为了避免空指针:你的CategoryDO里subCategories是可空类型,如果某个分类没有子分类,直接取值会得到null,用Elvis操作符转成空列表能保证后续Adapter运行稳定
  • 如果需要初始化一个空的Array<List<CategoryDO>>,可以直接写arrayOf<List<CategoryDO>>()

这样处理后,主分类数据存在mainCategories里,每个主分类对应的子分类集合按顺序存在subCategoriesArray中,正好符合CategoryAdapter的构造参数要求。

内容的提问来源于stack exchange,提问作者Keval Gangani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:18:14