RecyclerView DiffUtil необходимо обновить данные вручную? - PullRequest
0 голосов
/ 30 марта 2019

теперь я нахожу ошибку в моем проекте

val diffCallback = diff.newInstance(list, newList)
val diffResult = DiffUtil.calculateDiff(diffCallback)
list.clear()
list.addAll(newList)
diffResult.dispatchUpdatesTo(this)

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

но яиспользуйте данные в видоискателе и установите тег с ним в представлении.

когда я устанавливаю старые данные в качестве тега в представлении, тогда я изменяю список, потому что этот diffUtil возвращает значение true, поэтому просматриваем также обработчик старых данныхв его теге, но я всегда обновляю список адаптеров, когда diff, поэтому, когда я использую adapter.list.getindex(data), я получаю -1, потому что тег view является старыми данными, и мой список адаптеров должен был обновить новый список, даже если представление старых данных данных ==новый список.

когда я удаляю list.clear() list.addAll(newList), различие не может быть успешным, кто-то может сказать мне, почему?и как я могу решить эту проблему?

...