android - 如何在 Livedata Recyclerview 中按单词的第一个字母排序?
问题描述
我有来自 json 和 LiveData 的数据类改造。我正在发送带有观察的适配器列表。如何按观察中单词的第一个字母排序?
private fun getAllTeams(){
viewModel.getMyGroupMembers().observe(viewLifecycleOwner, Observer {
it.sortedBy {
it.name
}
it.forEach {
it.name.toCharArray().sorted().joinToString("")
}
Log.d("sort",it.toString())
scoreAdapter.submitList(it)
scoreAdapter.notifyDataSetChanged()
})
}
我尝试了一些东西,但它不起作用
class ScoreViewModel(private val scoreApi: ScoreApi) : ViewModel() {
@ExperimentalCoroutinesApi
private val myGroupMembers = MutableLiveData<List<DataClass>>()
@ExperimentalCoroutinesApi
fun getMyGroupMembers(): LiveData<List<DataClass>> = myGroupMembers
fun getAllGroups(){
viewModelScope.launch(Dispatchers.IO) {
val response = scoreApi.getAllGroups()
updateUi(response)
}
}
@ExperimentalCoroutinesApi
private fun updateUi(update: List<DataClass>) {
viewModelScope.launch(Dispatchers.Main) {
myGroupMembers.value = update
}
}
解决方案
sortedBy
当您想要制作列表的副本时使用方法。它通常在您的主列表不可变时使用:
val sortedList = it.sortedBy { it.name }
如果您想在不复制的情况下就地排序,您可以使用sortBy
扩展名。这仅在您的列表是可变的时才有效。
it.sortBy { it.name }
推荐阅读
- python - 我收到 ModuleNotFoundError: No module named 'pyforms.gui' 尽管安装了 pyforms-gui
- excel - 如果公式及其范围求和的Excel问题
- python - 如何在函数之间实时共享变量
- c - 是否可以将给定的 C 代码转换为 Assembly x86?
- spring-boot - GCP 和 Spring 回退。严重性始终是信息
- ef-code-first - EF Core 模型快照在添加迁移和更新之间不同步
- mapbox-gl-js - 如何从 geojson 文件中获取多边形的坐标并从中挤出 3D 多边形?
- python - 测试装饰器返回值时出错
- node.js - 您可以在 .env 文件的变量中分配多个参数吗?
- php - 为 Eloquent 集合创建一个新的空属性