У меня есть следующее fragment
:
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_favourite_books, container, false);
...
getActivity().getFavouriteBooks().observe(this, books -> booksAdapter.setBooks(books));
return view;
}
Мой Activity
:
public LiveData<List<Book>> getFavouriteBooks() {
return viewModel.getFavouriteBooks();
}
Мой ViewModel
(книги извлекаются из базы данных):
LiveData<List<Book>> favouriteBooks;
public MainViewModel(@NonNull Application application) {
super(application);
favouriteBooks = booksRepository.getFavouriteBooks();
}
public LiveData<List<Book>> getFavouriteBooks() {
return favouriteBooks;
}
Проблема: Когда я изменяю флаг favourite
вне этой функции (например, в другом fragment
), favouriteBooks
в адаптере не обновляется.Это fragment
у меня в TabLayout
, а favouriteBooks
обновляются только когда я нажимаю на другую вкладку еще раз.Есть идеи, как это решить?Это очень простой код, и я считаю, что LiveData
должен поддерживать это обновление вне себя, я считаю, что именно для этого был создан LiveData
.Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ: Перемещение наблюдателя с onCreateView
на onViewCreated
не имеет никакого значения.