如何解决有没有办法观察房间数据库中一组值的总和?
我在Room数据库中有一组读取日志,并且我希望能够观察到具有今天日期的所有行的minutesRead
列的总和,以便能够知道用户有多少页今天读过。我可以查询总和,并使用此方法正确获取它:
@Query("SELECT SUM(pagesRead) FROM log_table WHERE bookId IS :bookId AND date >= :date")
fun getPagesRead(bookId: String,date: Long): Int?
我的问题是,是否有办法以某种方式观察到这种情况,以便每当添加具有今天日期的日志时,它都会重新计算总和并更新其所有可观测值?
解决方法
您可以使用实时数据观察变化。
将返回类型更改为LiveData<Int>
:
@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"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。