Room不会从子集中更新列表的实时数据

时间:2019-05-07 16:04:06

标签: android android-room android-livedata

我有一个数据库,该数据库具有一个包含多列的表,我希望仅在显示列表时且在用户选择一项显示之前加载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发送消息以手动重新加载数据?

0 个答案:

没有答案