首页 > 解决方案 > 如何在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
            }
        }
    }

标签: androidsortingkotlinandroid-recyclerview

解决方案


您需要保留一个布尔标志并进行相应的排序。伪代码:

    var reversed = false

    textView.setOnClickListener {
        reversed = !reversed

        list = vehicleList.sortedBy { it.license }
        if (reversed) {
            list = list.reversed()
        }
    }
            

推荐阅读