У вас проблема в вашем setData
методе:
public void setData(List<Restaurant> newData) {
if (data != null) {
RestaurantDiffCallback restaurantDiffCallback = new RestaurantDiffCallback(data, newData);
DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(restaurantDiffCallback);
data.clear();
data.addAll(newData);
diffResult.dispatchUpdatesTo(this);
} else {
// first initialization
data = newData;
}
}
Когда ваш newData
равен null , вы меняете источник данных вашего адаптера, но вы не звоните notifyDataSetChanged
.
Таким образом, данные, которые вы видите на экране, не будут обновляться.
Итак, чтобы исправить это:
public void setData(List<Restaurant> newData) {
if (data != null) {
RestaurantDiffCallback restaurantDiffCallback = new RestaurantDiffCallback(data, newData);
DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(restaurantDiffCallback);
data.clear();
data.addAll(newData);
diffResult.dispatchUpdatesTo(this);
} else {
// first initialization
data = newData;
notifyDataSetChanged();
}
}
Еще одна вещь, если не очень хорошая практика, настройка набора данных вашего адаптера имеет значение null. Поэтому я предлагаю установить ваши данные как пустой список вместо нуля:
data = new ArrayList<>();