Как узнать какие сообщения из истории надо удалить

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

Ответ

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

Пример с DiffUtil.Callback:

class MessageDiffCallback(
    private val oldList: List<Message>,
    private val newList: List<Message>
) : DiffUtil.Callback() {
    override fun getOldListSize() = oldList.size
    override fun getNewListSize() = newList.size
    override fun areItemsTheSame(oldPos: Int, newPos: Int) = 
        oldList[oldPos].id == newList[newPos].id
    override fun areContentsTheSame(oldPos: Int, newPos: Int) = 
        oldList[oldPos] == newList[newPos]
}

Использование:

val diffResult = DiffUtil.calculateDiff(MessageDiffCallback(oldList, newList))
adapter.submitList(newList)
diffResult.dispatchUpdatesTo(adapter)

DiffUtil автоматически определит, какие элементы удалены, добавлены или изменены, и обновит RecyclerView оптимально.