提问者:小点点

有没有一种方法可以观察来自Room数据库的一组值的总和?


我在Room数据库中有一组阅读日志,我希望能够观察所有行的minutesRead列与今天日期的总和,从而能够知道用户今天阅读了多少页。我能够查询求和,并使用以下方法正确地获得它:

@Query("SELECT SUM(pagesRead) FROM log_table WHERE bookId IS :bookId AND date >= :date")
fun getPagesRead(bookId: String, date: Long): Int?

我的问题是,是否有一种方法可以观察到这一点,以便在任何时候添加一个具有今天日期的日志时,它都会重新计算总和并更新其所有的可观察值?


共1个答案

匿名用户

您可以使用实时数据来观察变化。

将返回类型更改为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"