Как сделать чтобы полученный с помощью LiveData List в дальнейшем не обновлялся?
In Dao:
@Query("SELECT * FROM person_table WHERE status = :status_dead ORDER BY id ASC")
LiveData<List<Person>> getDeads(String status_dead);
In Repo:
public class PersonRepository {
private LiveData<List<Person>> mDeads;
public class PersonRepository {
public Single<List<Person>> getFivePersonsFrom(String status_dead) {
mPersonDao = db.PersonDao();
mDeads = mPersonDao.getDeads(DEAD);
}
LiveData<List<Person>> getDeads() {
return mDeads;
}
}
In ViewModel:
public class PersonViewModel extends AndroidViewModel {
private PersonRepository mRepository;
private final LiveData<List<Person>> mDeads;
public PersonViewModel(@NonNull Application application) {
super(application);
mRepository = new PersonRepository(application);
mDeads = mRepository.getDeads();
}
LiveData<List<Person>> getDeads() {
return mDeads;
}
}
In Activity:
deadViewModel = new ViewModelProvider(this,
ViewModelProvider.AndroidViewModelFactory.getInstance(this.getApplication()))
.get(PersonViewModel.class);
deadViewModel.getDeads().observe(this, deads -> deadAdapter.submitList(deads));
Вобщем это все выводит мне в CardStackView список из базы, который "живой" - при изменениях в базе обновляется список. Мне же надо, чтобы в момент создания View получала через LIveData актуальный список, но последующие действия, влияющие на базу, уже не обновляли список.
Как это сделать?
Ответы (1 шт):
Автор решения: Takexito
→ Ссылка
Как вариант вынести Observer в переменную и внутри отписываться от него