观察LiveData中objects选中属性的变化

Observe the change of selected attributes of objects in LiveData

我正在观察以下 LiveData:

BookDao:

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

在片段中,我是这样观察的(简化):

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

一切正常,adapter显示所有书籍。但是,当数据库中的标志更改时(favourite 列),我需要禁用刷新。换句话说,当任何一本书被标记为收藏时,我不希望 observer 到 运行。除了 favourite 列之外,有什么方法可以观察 book 的所有列?向 observer 添加条件不是一个好主意,因为将新状态与先前状态进行比较会导致 O(n^2) 复杂性。谢谢。

In other words, when any book is marked as favourite, I do not want observer to run.

获取第一个查询后即可使用.removeObserver()

Is there any way how to observe all columns of book except for favourite column?

在 Dao 中写一个 sql 查询来做到这一点,然后观察它,例如:

SELECT Title, Body FROM TABLENAME;