Данные хранятся с помощью Room. При старте активити создается слушатель observe, где с бд получаю данные. Эти данные мне нужно обновить с помощью Retrofit и перезаписать в бд. Как правильно это организовать? У меня проблема в том, что когда обновляются и перезаписываются данные, срабатывает слушатель observe и вновь начинает обновлять. Происходит зацикливание. Код:
metcastListViewModel.getMetcastListList().observe(MainActivity.this, new Observer<List<metcast>>() {
@Override
public void onChanged(@Nullable final List<metcast> metcasts) {
for (int i=0; i<metcasts.size(); i++) {
mMetcastAdapter.addItem(metcasts.get(i));
Call<metcast> Metcast = NetworkService.getInstance().getAPImetcast().getMetcast(
metcasts.get(i).getCity(), "token");
Metcast.enqueue(new Callback<metcast>() {
@Override
public void onResponse(Call<metcast> call, Response<metcast> response) {
if (response.isSuccessful()) {
metcastListViewModel.updateByCity(response.body()); //Из-за этой строки вновь вызывается метод observe
mMetcastAdapter.addItem(response.body());
}
@Override
public void onFailure(Call<metcast> call, Throwable t) {
mMetcastAdapter.addItems(metcasts);
Log.d("1337", "failure " + t);
}
});
}
}
Можно не вставлять обновление данных в метод
observe, но тогда я не знаю как получить данные и вставить их в retrofit для обновления