RecyclerView DiffUtil необходимо обновить данные вручную?

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

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

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

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

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

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

0 ответов

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