Метод dispatchUpdatesTo(RecyclerView.Adapter)
- это на самом деле простая оболочка dispatchUpdatesTo(ListUpdateCallback updateCallback)
.
Я думаю исходный код говорит само за себя:
public void dispatchUpdatesTo(final RecyclerView.Adapter adapter) {
dispatchUpdatesTo(new ListUpdateCallback() {
@Override
public void onInserted(int position, int count) {
adapter.notifyItemRangeInserted(position, count);
}
@Override
public void onRemoved(int position, int count) {
adapter.notifyItemRangeRemoved(position, count);
}
@Override
public void onMoved(int fromPosition, int toPosition) {
adapter.notifyItemMoved(fromPosition, toPosition);
}
@Override
public void onChanged(int position, int count, Object payload) {
adapter.notifyItemRangeChanged(position, count, payload);
}
});
}
Вы можете видеть обратные вызовы, единственная цель которых уведомлять об обновлениях.
Вычисление diff - это операция только для чтения, которая оставляет оба списка без изменений. Вот почему вам нужно вручную обновить список внутри вашего адаптера.