Очистите список перед добавлением новых моделей:
viewModel.geHomeList(homeRequestModel).observe(getViewLifecycleOwner(), new Observer<ArrayList<HomeResponseModel>>() {
@Override
public void onChanged(ArrayList<HomeResponseModel> homeResponse) {
homeResponseModels.clear();
homeResponseModels.addAll(homeResponse);
homeAdapter.notifyDataSetChanged();
}
});
}
Или, что еще лучше:
Если ваш адаптер содержит List или HomeResponseModel, вы можете создать метод для его обновления:
public update(List<HomeResponseModel> homeResponse) {
this.homeResponseModels = homeResponse;
notifydatasetchanged();
}
и затем измените метод наблюдения, чтобы вызвать его:
viewModel.geHomeList(homeRequestModel).observe(getViewLifecycleOwner(), new Observer<ArrayList<HomeResponseModel>>() {
@Override
public void onChanged(ArrayList<HomeResponseModel> homeResponse) {
homeAdapter.update(homeResponse);
}
});
}
Кроме того, в вашей ViewModel в методе loadHomeList в обратном вызове onResponse вы можете присвоить полученные данные liveData:
if (response.isSuccessful()) {
homeLiveData.setValue(response.body());
}
нет необходимости сохранять его в homeList
var, вы можете избавиться от этого var. В противном случае выполните homeList.clear();
перед добавлением в него всех полученных данных, чтобы избежать дублирования.