【问题标题】:How to sort reccyclerview in kotlin android如何在kotlin android中对reccyclerview进行排序
【发布时间】:2021-06-06 10:35:55
【问题描述】:

在这里,我编写了一个函数,当单击特定的 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
            }
        }
    }

【问题讨论】:

    标签: android sorting kotlin android-recyclerview


    【解决方案1】:

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

        var reversed = false
    
        textView.setOnClickListener {
            reversed = !reversed
    
            list = vehicleList.sortedBy { it.license }
            if (reversed) {
                list = list.reversed()
            }
        }
                
    

    【讨论】:

    • 你能详细说明一下吗?
    【解决方案2】:

    您可以使用type varaibleenum 例如

    var sortType : Int = 1 // 1 or asc & 2 for desc. You can use enum as well
    

    您的排序功能将是

    fun sort() {
      if(sortType == 1) {
       sortType = 2
       vehicleList.sortByDescending {it.license}
      } else { 
        sortType = 1
        vehicleList.sortBy {it.license}
      }
      adapter.updateList(vehicleList)
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-10
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多