Как сортировать предметы из recycerview по внешним условиям - PullRequest
0 голосов
/ 31 октября 2019

У меня есть простое приложение, в котором пользователь устанавливает свою DOB, и приложение вычисляет дни, оставшиеся до следующего дня рождения. Я использую Firebase для хранения данных, и при получении данных я получаю DOB из базы данных и выполняю вычисления, чтобы найти дни, оставшиеся до следующего дня рождения. Просто для заметок оставшиеся дни считаются после извлечения и не сохраняются в базе данных. Итак, что я хочу: После получения DOB и расчета оставшихся дней я хочу показать данные в Recycler View в порядке возрастания оставшихся дней. Как я могу это сделать?

Databasemodel.kt

data class Databasemodel(val uid:String, val name:String, val dob:String) {

constructor():this("",",","")
}

Mainactivity.kt

lateinit var bdayList: MutableList<Databasemodel>  //I have initialized it later
val ref = FirebaseDatabase.getInstance().getReference("BirthdayPersons")
  ref.addValueEventListener(object : ValueEventListener {
        override fun onCancelled(p0: DatabaseError) {

        }

        override fun onDataChange(p0: DataSnapshot) {
            if (p0.exists()) {
                bdayList.clear()
                for (iterator in p0.children) {
                    val bday=iterator.getValue(Databasemodel::class.java)
                    bdayList.add(bday!!)
                }
                row_recycle_actual.layoutManager = LinearLayoutManager(applicationContext)
                row_recycle_actual.adapter=RecyclerAdapter(bdayList)
            }

        }

    })

1 Ответ

2 голосов
/ 31 октября 2019

После

for (iterator in p0.children) {
  val bday=iterator.getValue(Databasemodel::class.java)
  bdayList.add(bday!!)
}

вы должны отсортировать список по желаемому предикату, вы можете сделать это с помощью sortBy в Kotlin:

//assuming you have "remainingDays" or similiar field in your model
bdayList.sortBy { dbmodel -> dbmodel.remainingDays}

, затем вы можете передать его в RecyclerView

row_recycle_actual.adapter=RecyclerAdapter(bdayList)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...