首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >观察第二个实时数据之后的实时数据

观察第二个实时数据之后的实时数据
EN

Stack Overflow用户
提问于 2018-08-16 16:08:20
回答 1查看 754关注 0票数 2

我的视图模型声明了两个实时数据:

该场景从存储库获取两个方法,以便依赖于第一个实时数据的第二个实时数据输入参数获得数据

代码语言:javascript
复制
public class ProductViewModel extends AndroidViewModel {

private LiveData<DataWrapper<GetProductQuery.Product>> productLiveData;
private LiveData<DataWrapper<ArrayList<ProductList>>> vendorProductLiveData;


private ProductRepository repository ;

public ProductViewModel(@NonNull Application application) {
    super(application);
    repository = new ProductRepository();

}

public LiveData<DataWrapper<GetProductQuery.Product>> getProductLiveData(String productId) {
    productLiveData = repository.getProduct(productId);
    return productLiveData;
}

public LiveData<DataWrapper<ArrayList<ProductList>>> getVendorProductLiveData(int vendorId) {
    vendorProductLiveData = repository.getLimitProduct(vendorId);
    return vendorProductLiveData;
} }

在活动中,我希望在第一个实时数据之后运行第二个实时数据:

代码语言:javascript
复制
viewModel.getVendorProductLiveData(Integer.parseInt(p.getId())).observe(getActivity(), arrayListDataWrapper -> {

                ArrayList<ProductList> pList = 
  arrayListDataWrapper.getData();
 });



viewModel.getProductLiveData(id).observe(this, productDataWrapper -> {
                p = productDataWrapper.getData();
});



                viewModel.getVendorProductLiveData(Integer.parseInt(p.getId())).observe(getActivity(), arrayListDataWrapper -> {
//do logic after get product

});
EN

回答 1

Stack Overflow用户

发布于 2018-08-16 22:49:13

您应该使用Transformations.switchMap()将第一个LiveData转换为第二个LiveData,并使用前面发出的值作为参数。然后,您可以观察这个转换后的LiveData,以获得最终结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51872410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档