小编SSM*_*SMI的帖子

将LiveData与包含的不同对象合并

所以我正在使用Room和LiveData编写应用程序。这是一个财务应用程序。我有两个要合并的实体,即PayeeTransaction交易有一个ForeignKey将其链接到Payee。我一直在使用Room中的LiveData,一直到(Daos,Repository,ViewModels)到我的UI(片段)。

在到达“片段”级别之前,我想在某种程度上合并这两个数据集,但不确定如何去做。我知道我可以直接从数据库中使用查询创建POJO,但我有点想在其中包含一个带有PayeeTransaction Object,而不仅仅是两个字段中的所有字段。

有没有办法做到这一点?也许使用其中一种转换(map或switchMap)?还是使用MediatorLiveData?他们可以观察不止一种数据类型(例如LiveData和LiveData)吗?

Payee.java

@Entity
public class Payee {

    @PrimaryKey (autoGenerate = true)
    @ColumnInfo (name = "id")
    private int id;

    . . . 
}
Run Code Online (Sandbox Code Playgroud)

Transaction.java

@Entity (foreignKeys =
        @ForeignKey(entity = Payee.class, 
                             parentColumns = "id", 
                             childColumns = "payee_id", 
                             onDelete = RESTRICT))
public class Transaction {

    @PrimaryKey (autoGenerate = true)
    @ColumnInfo (name = "id")
    private int id;

    @ColumnInfo (name = "payee_id")
    private int payeeId;
    @Ignore
    private Payee payee;

    . . …
Run Code Online (Sandbox Code Playgroud)

android android-room android-livedata android-viewmodel android-architecture-components

5
推荐指数
1
解决办法
2362
查看次数