我有一个数据库,该数据库具有一个包含多列的表,我希望仅在显示列表时且在用户选择一项显示之前加载3。
为此,我创建了以下dao
node{sh "git --version"
这是我的报告实体:
@Dao
interface ReportDao {
@Query("SELECT id, name, description, created FROM reports ORDER BY created DESC")
fun loadShortReports(): LiveData<List<ReportItemDO>>
@Insert(onConflict = OnConflictStrategy.FAIL)
fun saveReports(reports: List<ReportDO>): Completable
}
这是列表的最小实体
@Entity(tableName = "reports")
data class ReportDO(
@PrimaryKey val id: UUID
, val name: String
, val description: String
.......)
(ReportItemVO接口是列表所期望的)
应用程序加载后,一切都会正确加载
但是为了测试这一点,我创建了一个简单的按钮,使用以下代码向数据库中添加了一个随机的data class ReportItemDO(
override val id: UUID
, override val name: String
, override val description: String
, @ColumnInfo(name = "created") override val date: Date)
: ReportItemVO
项目:
ReportDO
依次调用
repository.addReport(
report
).subscribeOn(schedulers.subscribeScheduler)
.observeOn(schedulers.observeScheduler)
.subscribe {
Log.i(MainViewModel.TAG, "success")
}
但是列表似乎没有自动更新
当我关闭并重新启动应用程序时,列表会更新
我认为这是因为我仅获取实体的一个子集,因此Room不知道它应该触发更新
是否可以让Room了解它创建的LiveData已更新并再次触发加载过程?
此外,由于我希望添加刷新按钮,是否可以向Room发送消息以手动重新加载数据?