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

Kotlin开发中列表分类项按字母顺序排序失效该如何解决?

Kotlin分类列表排序失效解决方案

问题原因

  • sortedBy 为不可变集合操作,返回排序后的新列表,不会修改原有列表。你在also代码块中调用sortedBy但未接收返回值,排序结果直接被丢弃,没有生效。
  • 排序逻辑位置错误:你需要对groupBy生成的全部分类(Map的Key)做全局排序,而非在每个单分类内部对仅含1个Header元素的列表做无意义排序。同时原代码未拼接分类下的条目,不符合你预期的展示结构。

修正后代码

items = dataList.groupBy { it.category }
    // 对分组后的分类按展示名称的字母顺序排序
    .toSortedMap(compareBy { category ->
        "res.Strings.customName${category.name}" ?: category.name
    })
    // 拼接每个分类的Header + 下属条目,扁平化生成最终列表
    .flatMap { (category, categoryData) ->
        val headerTitle = "res.Strings.customName${category.name}" ?: category.name
        buildList {
            // 添加分类头
            add(Header(headerTitle))
            // 添加当前分类下的所有条目,如需条目也排序可在flatMap后加sortedBy规则
            addAll(categoryData.flatMap { it.list })
        }
    }

补充说明

如果需要对每个分类下的子条目也做排序,可在addAll的参数中追加排序规则,示例:
addAll(categoryData.flatMap { it.list }.sortedBy { it.itemTitle })


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:27:03