Наблюдайте за изменением выбранных атрибутов объектов в LiveData - PullRequest
2 голосов
/ 02 мая 2019

Я наблюдаю за следующими LiveData:

BookDao:

@Query("SELECT * FROM books")
LiveData<List<Book>> getBooks();

Фрагмент, я наблюдаю так (упрощенно):

viewModel.getBooks().observe(getViewLifecycleOwner(), b -> adapter.setBooks(b));

Все хорошо, adapter отображает все книги.Тем не менее, мне нужно отключить обновление при изменении флага в дБ (favourite столбец).Другими словами, когда любая книга помечается как любимая, я не хочу запускать observer.Есть ли способ, как наблюдать все столбцы book, кроме favourite столбца?Добавление условия к observer не является хорошей идеей, поскольку сравнение нового состояния с предыдущим состоянием приводит к сложности O(n^2).Спасибо.

1 Ответ

1 голос
/ 04 мая 2019

Другими словами, когда какая-либо книга помечается как любимая, я не хочу, чтобы наблюдатель запускался.

Вы можете использовать .removeObserver() после получения первого запроса.

Есть ли способ, как просмотреть все столбцы книги, кроме избранного столбца?

Для этого напишите sql-запрос в Dao, а затем наблюдайте его, например:

SELECT Title, Body FROM TABLENAME;
...