DiffUtil считает минимальный набор обновлений между старым и новым списком на фоне; ListAdapter встраивает AsyncListDiffer и принимает submitList, избегая notifyDataSetChanged.
Разбор
- areItemsTheSame vs areContentsTheSame — разные уровни идентичности.
- Не мутируйте тот же список in-place без копий — differ не увидит изменений.
- Payload в onBind ускоряет частичные обновления (лайк без rebind всего).
- Огромные списки: Diff может быть дорог — профилируйте.
Итог
DiffUtil/ListAdapter дают точечные анимации и меньше лишней перерисовки списка.