Android 是否有一种方法可以观察房间数据库中一组值的总和?

Android 是否有一种方法可以观察房间数据库中一组值的总和?,android,kotlin,android-room,Android,Kotlin,Android Room,我在一个房间数据库中有一组读取日志,我希望能够观察今天日期的所有行的minutesRead列的总和,能够知道用户今天已经读取了多少页。我能够查询总和,并使用此方法正确获取: @Query("SELECT SUM(pagesRead) FROM log_table WHERE bookId IS :bookId AND date >= :date") fun getPagesRead(bookId: String, date: Long): Int? 我的问题是,是否有

我在一个房间数据库中有一组读取日志,我希望能够观察今天日期的所有行的minutesRead列的总和,能够知道用户今天已经读取了多少页。我能够查询总和,并使用此方法正确获取:

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

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

您可以使用实时数据来观察更改

将返回类型更改为LiveData:

LiveData相关性:

implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"

是否保证在每次添加符合日期标准的新日志时触发?我想我已经尝试过像大多数房间查询一样返回LiveData了,但我不记得它起作用了。是的,我只是再次尝试过,它不会触发ViewModel中的LiveData。如果原始查询中包含的某个条目被修改,它就起作用了。在这种情况下,LiveData将更新,但如果添加了符合条件的新条目,则不会更新。@cpgreen2您可以创建函数来获取页面,并将其作为列表进行观察,然后获取总和
getPagesRead.observe(viewLifecycleOwner, Observer { sum ->
            // Update the UI.
        })
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"