Обновление списка в RecyclerView

169
15 октября 2019, 01:20

Для обновления списка в RecyclerView знаю три способа.

  1. notifyDataSetChanged()

  2. notifyItemChanged()

  3. Использовать DiffUtils.

Может кто дать совет в каких случаях, какой способ эффективнее использовать. И если есть еще какие способы.

Answer 1

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

notifyItemChanged() - событие изменения конкретного элемента списка, то есть по идее перерисуется только тот элемент, позицию которой передали в аргументе. Предпочтительный способ, когда мы точно знаем какие элементы в списке были изменены, тем более, по логике, если элемент в данный момент не отображается на экране, то лишний раз не будет перерисовки.

DiffUtils - во многих источниках советуют использовать его вместо notifyDataSetChanged(), но я как-то не увидел большого выигрыша, даже наоборот, производительность упала. Возможно не так реализовал, не спорю. Но тут по идее зависит от объема самого списка, при большом списке, думаю предпочтительнее notifyDataSetChanged(), так как в DiffUtils все равно нужно сравнивать поэлементно.

READ ALSO
Сортировка массивов на JAVA

Сортировка массивов на JAVA

Компилятор выдаёт ошибку:

122
В чём здесь ошибка? [закрыт]

В чём здесь ошибка? [закрыт]

Вот кодПри компиляции выдаёт ошибки:

124