Как принять изменение от ViewModel только один раз?
Проблема такая. У меня есть активити и фрагент в ней, активити через ViewModel отправляет данные во фрагент и та они меняються, но если я смен фрагментю, а потом заново вернусь к нему то сообщение приходит заново, как новое. Как сделать так чтобы они приходили только один раз?
Отправляю:
scoreViewModel = ViewModelProviders.of(this).get(ScoreViewModel.class);
scoreViewModel.addScore(event);
Получаю:
scoreViewModel.getScore().observe(this, new Observer<MainActivity.Event>() {
@Override
public void onChanged(@Nullable MainActivity.Event event) {
mDataset.add(new Event(event.getFName(), event.getLName(), event.getMoney()));
mAdapter.notifyDataSetChanged();
}
});
ScoreViewModel
public class ScoreViewModel extends ViewModel{
private MutableLiveData<MainActivity.Event> score;
public MutableLiveData<MainActivity.Event> getScore() {
if (score == null) { // убрать
score = new MutableLiveData<>();
resetScore();
}
return score;
}
public void addScore(MainActivity.Event event) {
if (score.getValue() != null) {
score.setValue(event);
}
}
public void resetScore() {
score.setValue(new MainActivity.Event(null,null,null));
}
}
P.S. задумывался над тем, чтобы после отправки следом прописывать resetScore, а при получении делать проверку на null, это единственный мой рабочий вариант, но как по мне это не правильно. Спасибо!