【问题标题】:Android Room Observer: Relational data update not displayed correctlyAndroid Room Observer:关系数据更新未正确显示
【发布时间】:2020-11-08 00:31:46
【问题描述】:

我有一个如下的关系数据结构

Entry.kt

@Entity(tableName = "entries")
data class Entry(
    @ColumnInfo(name = "entry_id") @PrimaryKey(autoGenerate = true) val entryID: Long,
    @ColumnInfo(name = "time_stamp") val timeStamp: Timestamp
)

Feeling.kt

@Entity(tableName = "feelings")
data class Feeling(
    @ColumnInfo(name = "feeling_id") @PrimaryKey(autoGenerate = true) val feelingID: Int,
    val feeling: String,
    val color: Int
)

Subentry.kt

@Entity(tableName = "sub_entries",indices = [Index("feeling_id")])
data class SubEntry(
    @ColumnInfo(name = "sub_entry_id") @PrimaryKey(autoGenerate = true) val subEntryID: Long,
    @ColumnInfo(name = "entry_id") var entryID: Long,
    @ColumnInfo(name = "feeling_id") val feelingID: Int,
    val intensity: Int
)

以及连接三者的道场

EntryWithSubEntriesAndFeelings.kt

data class EntryWithSubEntriesAndFeelings(
    @Embedded val entry: Entry,
    @Relation(
        parentColumn = "entry_id",
        entityColumn = "entry_id"
    )
    val subEntries: List<SubEntry>,
    @Relation(
        parentColumn = "entry_id",
        entityColumn = "feeling_id",
        associateBy = Junction(SubEntry::class)
    )
    val feelings: List<Feeling>
)

现在有了预填充的感觉数据库,一切正常。但我目前正在添加插入自定义感觉的功能。这些和相应的子条目最终正确地出现在子条目数据库中(我从虚拟设备复制了数据库文件并手动检查了它们)。但是由于某种原因,新的感觉并没有传递给观察者和适配器,因此它没有与其他子条目一起显示。

感谢任何提示! :)

【问题讨论】:

    标签: android android-room observers


    【解决方案1】:

    事实证明,我的代码中仍然有一些对初始列表的硬编码引用,这阻止了新感觉的显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      相关资源
      最近更新 更多