android - 如何将数据从服务器/管理器传递到 viewmodel RxJava Android
问题描述
我对 RxJava 非常陌生,我正在使用它开发一个 Android 应用程序。我正在发出网络请求,我希望我的 Fragment 根据网络返回的数据更新 UI,我正在寻找一种好的“rx”方式来做到这一点。基本上我让我的 Fragment 立即向我的视图模型发射它应该进行服务器调用。我需要进行服务器调用并将该数据通知/发送到 viewModel,以便我可以将其更新到片段。通常(没有 rx),我只是将所有这些数据与变量一起传递,但是如何使用 rx 和 observables 来实现这个数据流呢?
感谢大家。
解决方案
创建一个单独的存储库层,仅从您的视图模型访问它。
通过这种方式,您将拥有视图/数据绑定触发请求。
接下来,在 Repository 中进行一些状态管理或在那里存储一些数据(使用 LiveData)
在您的 ViewModel 中,将值分配给存储库中 LiveData 的引用。因此,无论何时您在 Repository 中更新它 - viewModel 都将具有相同的对象。
最后,您可以观察该 viewModel 的 LiveData。
val someData = MutableLiveData<SomeObject>()
- 这个在存储库中,现在您可以将任何网络调用结果保存在存储库中。
让您的 ViewModel 包含下一个:val someData= Repository.instance.someData
从片段/活动使用:viewModel.someData.observe(this, {...})
推荐阅读
- ssl - 使用 GoDaddy 托管域名的 S3 托管网站的 SSL 证书集成
- java - 如何在 react-native 本机模块中使用 Log.d?
- python - 从无标题的固定格式文件中读取数据
- javascript - ASPX 页面后面的代码没有执行 js 代码
- linux - 在 C++ 中使用 Unicode (UTF-8)
- ios - SKEmitterNode 从父节点移除后在屏幕上留下粒子
- python - 我的python很差,我在这段代码中找不到错误
- python - ValueError:在 Pandas 中检查值时,Series 的真值不明确
- python - 使用python为row和col动态创建html网格
- android - 想要使用谷歌分析而不是 firebase