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)
Разница не может быть успешной, кто-то может сказать мне, почему? и как я могу решить эту проблему?