android - 如何在android中同时从两个livedata中获取价值
问题描述
private var purchaseArrayList = ArrayList<PurchaseModelWithId>()
//初始化第一个数组列表
private var saleArrayList = ArrayList<SaleModelWithId>()
//初始化第二个数组列表
purchaseViewModel.showPurchaseItems(requireContext()).observe(viewLifecycleOwner, { purchaseList->
purchaseArrayList = purchaseList as ArrayList<PurchaseModelWithId>
saleViewModel.saleLiveData(requireContext()).observe(viewLifecycleOwner, saleList -> {
saleArrayList = saleList as ArrayList<SaleModelWithId>
//here I want two arraylist value but above code not works for me
})
})
提前致谢
解决方案
当您调用 showPurchaseItems() 时,将在将值设置为您的实时数据之前执行 return。
因此,当您在回调方法中为实时数据设置值时,请避免返回实时数据值。
首先将 showPurchaseItems() 方法和 saleLiveData() 方法设为 void 方法。
然后创建 getter 方法来获取 viewmodel 中 finalPurchaseList、saleList 的值。
public MutableLiveData<yourReurnType> getFinalPurchaseList(){
return finalPurchaseList;
}
public MutableLiveData<yourReurnType> getSaleList(){
return saleList;
}
然后在您的活动中调用您的两种方法来为您的实时数据设置值。之后观察实时数据。
showPurchaseItems();
saleLiveData();
viewmodel.getFinalPurchaseList().(requireContext()).observe(viewLifecycleOwner){}
viewmodel.getSaleList().(requireContext()).observe(viewLifecycleOwner){
}
请注意:在一个活动/片段中使用两个视图模型不是好的做法。
推荐阅读
- laravel - pusher-js v7.0.1 遇到问题
- r - R嵌套循环搜索和替换非常慢
- javascript - 端点应返回唯一标识符,以便 API 使用者可以追溯到最初上传的文件
- javascript - NestJS 中的 ValidationPipe 用于键值对对象
- logstash - udp 插件中的 Logstash 多行编解码器抛出错误
- amazon-web-services - 通过 IoT 核心规则(通过 SQL time_to_epoch)传递时间戳时,数据未插入到 Timestream 表中
- assembly - 我使用条件在z80 PIO中制作了一个程序,但结果不同
- entity-framework - .net Core EF 尝试通过查询创建组
- amazon-web-services - 如何将 aws 实例制作为托管实例?
- python-3.x - Django:如果模型尚不存在,序列化程序会在迁移中引发异常