NotifyDataSetChanged не работает, когда поле некоторых элементов в списке изменяется в RecyclerView - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть модель UniqueUserTransModel и UniqueArrayList. Сначала у меня есть список, и я передаю его адаптеру.

Старый список ->

pos : 0, name : "user 1", transcount : 10
pos : 1, name : "user 2", transcount : 9
pos : 2, name : "user 3", transcount : 8
pos : 3, name : "user 4", transcount : 7
pos : 4, name : "user 5", transcount : 6

После обновления у меня есть NewList, и я установил его в UniqueArrayList = ( Вновь вычисляемый ArrayList).

Новый список ->

pos : 0, name : "user 2", transcount : 11
pos : 1, name : "user 1", transcount : 9
pos : 2, name : "user 3", transcount : 8
pos : 3, name : "user 4", transcount : 7
pos : 4, name : "user 5", transcount : 6

И я только что позвонил notifydatasetChanged из фрагмента.

Первые два элемента поменялись местами в NewList но не отражаются в обзоре переработчика.

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

1 Ответ

0 голосов
/ 23 февраля 2020

Не создавать новый Arraylist для Adapter.

Очистить Arraylist и добавить все элементы в него из нового Arraylist.

Old ArrayList

UniqueArrayList.clear()

Новый Arraylist

UniqueArrayList.addAll(**name of new arraylist**)

Теперь снова перезагрузите набор данных.

notifyDataSetChanged()
...