gpt4 book ai didi

android - 使用 Room/LiveData 获取并观察三个对象

转载 作者:行者123 更新时间:2023-11-29 02:20:27 24 4
gpt4 key购买 nike

我有以下数据库关系: enter image description here

换句话说:一个Order有0-n个Books,一个Order被分配给一个Customer

在我的例子中,我有 bookId我想在我获得所有相关项(书籍、订单和客户)并且当我确信它们都存在时启动某个功能 - 我只需要启动它一次。我试图通过以下方式解决它:

View 模型:

private LiveData<Book> book;
private LiveData<Order> order;
private LiveData<Customer> customer;

public MyViewModel(Application app) {
...
book = bookRepository.getBookLiveData(id);
order = Transformations.switchMap(book, b -> orderRepository.getOrder(b.getIdOrder()));
customer = Transformations.switchMap(order, o -> customerRepository.getCustomer(o.getIdCustomer()));
}

但是,此解决方案无效,我相信可以使用 Room/LiveData 以更优雅的方式完成此操作。

我还尝试了另一种方法 - 创建以下对象 BookOrderCustomer:

public class BookOrderCustomer {

@Embedded
public Book book;

@Embedded
public Order order;

@Embedded
public Customer customer;

}

但这并没有像预期的那样工作,Dao 的查询总是返回 null。

知道如何解决这个问题吗?谢谢。

最佳答案

MediatorLiveData ,它可以观察你所有的流并合并数据。我认为这是最好的方法。

关于android - 使用 Room/LiveData 获取并观察三个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56252169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com