android - 如何在kotlin android中对reccyclerview进行排序
问题描述
在这里,我编写了一个函数,当单击特定的 textView 时,它将根据该属性对回收器视图进行排序,但该函数仅按降序排序。我想要功能,当第一次单击文本时,它按升序排序,第二次按降序排序,反之亦然。可以请任何人帮忙吗?
private fun sortTheData(){
binding.statusTextTV.setOnClickListener {
statusAsc = if(statusAsc){
vehicleList.sortedBy {
it.status
}
false
}else{
vehicleList.sortByDescending {
it.status
}
true
}
}
binding.permitTextTV.setOnClickListener {
Log.e(TAG, "sortTheData: $permitAsc", )
permitAsc = if(permitAsc){
vehicleList.sortedBy { vehicle ->
vehicle.permit
}.forEach { println(it.permit) }
false
}else{
vehicleList.sortByDescending { vehicle ->
vehicle.permit
}
true
}
adapter.updateList(vehicleList)
}
binding.licenseTextTV.setOnClickListener {
licenseAsc = if(licenseAsc){
vehicleList.sortedBy {
it.license
}
adapter.updateList(vehicleList)
false
}else{
vehicleList.sortByDescending {
it.license
}
adapter.updateList(vehicleList)
true
}
}
binding.spaceTextTV.setOnClickListener {
spaceAsc = if(spaceAsc){
vehicleList.sortedBy {
it.space
}
vehicleList.forEach{
println(it.space)
}
false
}else{
vehicleList.sortByDescending {
it.space
}
vehicleList.forEach{
println(it.space)}
true
}
}
}
解决方案
您需要保留一个布尔标志并进行相应的排序。伪代码:
var reversed = false
textView.setOnClickListener {
reversed = !reversed
list = vehicleList.sortedBy { it.license }
if (reversed) {
list = list.reversed()
}
}
推荐阅读
- reactjs - 无法使用 yarn start 启动反应项目
- sql - 如何使用 30 多个连接加速 SQL 查询
- flutter - 在嵌套列中显示 ListView
- visual-studio - Visual Studio 2019 - ASAN 报告了应用启动时的问题 (QT)
- vue.js - VueJS 空白页
- ace-editor - 如何为 Ace 编辑器创建自定义键绑定
- javascript - 当两个值相同时从数组中删除重复项
- types - 使用类型 F# 的底层原语/集合
- java - 在 Spring Boot 应用程序中配置 GCP 凭据的首选方法是什么
- python - 是否可以使用 vscode-jupyter 创建一个快捷方式,为光标下的数据框打开数据查看器?