У меня возникают проблемы с сортировкой элементов в представлении переработчика после их обновления.
Я нашел этот подход, который выглядит ужасно, и мне интересно, есть ли лучший подход. Также я использую его для добавления новых записей в представление ресайклера, но я не уверен, что это хорошая практика, если я должен ее изменить.
Еще одно большое сомнение, которое у меня есть в моем коде, связано с тем, как я обрабатываю вещи в адаптере.
Можно ли или лучше сделать сортировку через видхолдер?
Я очень ценю любую помощь или предложения, которые вы можете предоставить.
Подход:
Вызов функции основного действия для выполнения следующих действий
MyList.clear()
MyList.addAll( dbHandler!!.cursor())
MyList.sortedWith(compareBy({ it.sortervalue }))
adapter.notifyDataSetChanged()
Как я работаю с кнопками, это хорошая практика или большое нет?
внутри onBindViewHolder
p0.itemView.editButton.setOnClickListener {
editpress()
Log.d("myTag", "edit pressed")
}
Если вы используете SQLite, отсортируйте свои элементы в функции, которая их запрашивает, и вызывайте эту функцию всякий раз, когда вам нужно ее обновить.
Фахади Мухумуза, стоит ли вызывать курсор всякий раз, когда я что-то обновляю? Не лучше ли сделать намерение, как я предложил? Таким образом, я просто сортирую список в основном действии и просто добавляю одну строку в базу данных, курсор будет вызываться только при создании.
Tariqul Islamic, я пытался манипулировать списком в адаптере, но ничего не происходит, я думаю, что список, объявленный в основном действии «val adapter = Padapter (mylist)», — это то, что управляет держателями представления, и тогда было бы неизбежным намерение изменить список в основной деятельности не адаптер. Есть ли другой способ? Я сделал очистку, потому что обновление происходит внутри адаптера, мне также понадобится намерение вместо очистки, чтобы добавить строку в основной список действий, которая управляет адаптером, и notifyDataSetChanged()
Я решил это, полностью переместив список в адаптер, поэтому я не вызываю адаптер, предоставляющий список, например
в основной деятельности это было: private val adapter = адаптер (список)
вместо этого я делаю так сейчас: приватный адаптер val = адаптер () и в основной деятельности по созданию
адаптер.lista.addAll(dbHandler!!.cursor())
поэтому список находится внутри адаптера только теперь, когда я его сортирую, мне не нужно снова передавать его адаптеру. чтобы отсортировать его: listaPrioridades.sortByDescending { it.xxxx }
где xxxx — столбец, который вы сортируете.
Вы можете взять ссылку на нажатие кнопки в действии или фрагменте (когда часть щелчка должна вычислять многие вещи, такие как отправка данных, модель представления или операции с базой данных и т. д.). А во-вторых, вот что. Отсортируйте список. Возьмите ссылку на список, который отображается в адаптере. Когда вы добавляете элемент в список, просто сортируйте его, а не очищайте. затем уведомить