Я думаю, что сейчас самый простой и рекомендуемый способ уведомления адаптера об изменениях набора данных - это DiffUtils
.Это дает вам возможность решить, какие элементы изменились, а какие - новые и т. Д. Вам необходимо расширить DiffUtils.Callback
и реализовать несколько методов:
class DiffCallback(): DiffUtil.Callback() {
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
}
override fun getOldListSize(): Int {
}
override fun getNewListSize(): Int {
}
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
}
}
и настроить DiffUtils для уведомления вашего адаптера:
val diffUtil = DiffUtil.calculateDiff(DiffCallback(oldElements, newElements))
oldElements.clear()
oldElements.addAll(newElements)
diffUtil.dispatchUpdatesTo(this)