我在Room数据库中有一组阅读日志,我希望能够观察所有行的minutesRead
列与今天日期的总和,从而能够知道用户今天阅读了多少页。我能够查询求和,并使用以下方法正确地获得它:
@Query("SELECT SUM(pagesRead) FROM log_table WHERE bookId IS :bookId AND date >= :date")
fun getPagesRead(bookId: String, date: Long): Int?
我的问题是,是否有一种方法可以观察到这一点,以便在任何时候添加一个具有今天日期的日志时,它都会重新计算总和并更新其所有的可观察值?
您可以使用实时数据来观察变化。
将返回类型更改为LiveData
:
@Query("SELECT SUM(pagesRead) FROM log_table WHERE bookId IS :bookId AND date >= :date")
fun getPagesRead(bookId: String, date: Long): LiveData<Int>
这样观察:
getPagesRead.observe(viewLifecycleOwner, Observer { sum ->
// Update the UI.
})
LiveData依赖项:
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"