我正在观察以下LiveData:
BookDao:
@Query("SELECT * FROM books")
LiveData<List<Book>> getBooks();
在片段中,我正在观察这种方式(简化):
viewModel.getBooks().observe(getViewLifecycleOwner(), b -> adapter.setBooks(b));
一切正常,adapter
显示所有书籍。但是,当db(favourite
列)中的标志更改时,我需要禁用刷新。换句话说,当任何一本书被标记为收藏时,我都不想运行observer
。有什么方法可以观察book
列中除favourite
列之外的所有列?在observer
中添加条件不是一个好主意,因为将新状态与先前状态进行比较会导致O(n^2)
的复杂性。谢谢。
答案 0 :(得分:0)
换句话说,当任何一本书被标记为收藏时,我都不想让观察者奔跑。
获得第一个查询后,您可以使用.removeObserver()
。
有什么方法可以观察书中除喜欢的列以外的所有列?
在Dao中编写一个sql查询来执行此操作,然后观察它,例如:
SELECT Title, Body FROM TABLENAME;