Какие знаешь методы DiffUtil.ItemCallback

«Какие знаешь методы DiffUtil.ItemCallback» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

DiffUtil.ItemCallback используется в ListAdapter для эффективного сравнения элементов списка. Основные методы:

  1. areItemsTheSame(oldItem: T, newItem: T): Boolean
    Проверяет, ссылаются ли объекты на один и тот же элемент (например, по id).
    override fun areItemsTheSame(old: User, new: User) = old.id == new.id
  1. areContentsTheSame(oldItem: T, newItem: T): Boolean
    Проверяет, одинаково ли содержимое элементов (например, все поля).
    override fun areContentsTheSame(old: User, new: User) = old == new
  1. getChangePayload(oldItem: T, newItem: T): Any? (опционально)
    Возвращает payload для частичного обновления ViewHolder (например, через notifyItemChanged(position, payload)).

Использование DiffUtil уменьшает количество перерисовок и улучшает производительность RecyclerView.