Хороший подход к сортировке вида ресайклера после обновления и некоторые сомнения

У меня возникают проблемы с сортировкой элементов в представлении переработчика после их обновления.

Я нашел этот подход, который выглядит ужасно, и мне интересно, есть ли лучший подход. Также я использую его для добавления новых записей в представление ресайклера, но я не уверен, что это хорошая практика, если я должен ее изменить.

Еще одно большое сомнение, которое у меня есть в моем коде, связано с тем, как я обрабатываю вещи в адаптере.

Можно ли или лучше сделать сортировку через видхолдер?

Я очень ценю любую помощь или предложения, которые вы можете предоставить.

Подход:

Вызов функции основного действия для выполнения следующих действий

MyList.clear()
MyList.addAll( dbHandler!!.cursor())
MyList.sortedWith(compareBy({ it.sortervalue }))
adapter.notifyDataSetChanged()

Как я работаю с кнопками, это хорошая практика или большое нет?

внутри onBindViewHolder

p0.itemView.editButton.setOnClickListener {
    editpress()
    Log.d("myTag", "edit pressed")
}

Вы можете взять ссылку на нажатие кнопки в действии или фрагменте (когда часть щелчка должна вычислять многие вещи, такие как отправка данных, модель представления или операции с базой данных и т. д.). А во-вторых, вот что. Отсортируйте список. Возьмите ссылку на список, который отображается в адаптере. Когда вы добавляете элемент в список, просто сортируйте его, а не очищайте. затем уведомить

Tariqul Islam 24.06.2019 14:52

Если вы используете SQLite, отсортируйте свои элементы в функции, которая их запрашивает, и вызывайте эту функцию всякий раз, когда вам нужно ее обновить.

Fahadi Muhumuza 24.06.2019 14:52

Фахади Мухумуза, стоит ли вызывать курсор всякий раз, когда я что-то обновляю? Не лучше ли сделать намерение, как я предложил? Таким образом, я просто сортирую список в основном действии и просто добавляю одну строку в базу данных, курсор будет вызываться только при создании.

Andre Andriole 24.06.2019 16:12

Tariqul Islamic, я пытался манипулировать списком в адаптере, но ничего не происходит, я думаю, что список, объявленный в основном действии «val adapter = Padapter (mylist)», — это то, что управляет держателями представления, и тогда было бы неизбежным намерение изменить список в основной деятельности не адаптер. Есть ли другой способ? Я сделал очистку, потому что обновление происходит внутри адаптера, мне также понадобится намерение вместо очистки, чтобы добавить строку в основной список действий, которая управляет адаптером, и notifyDataSetChanged()

Andre Andriole 24.06.2019 16:16
0
4
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил это, полностью переместив список в адаптер, поэтому я не вызываю адаптер, предоставляющий список, например

в основной деятельности это было: private val adapter = адаптер (список)

вместо этого я делаю так сейчас: приватный адаптер val = адаптер () и в основной деятельности по созданию

адаптер.lista.addAll(dbHandler!!.cursor())

поэтому список находится внутри адаптера только теперь, когда я его сортирую, мне не нужно снова передавать его адаптеру. чтобы отсортировать его: listaPrioridades.sortByDescending { it.xxxx }

где xxxx — столбец, который вы сортируете.

Другие вопросы по теме