首页 > 解决方案 > 如何将数据从服务器/管理器传递到 viewmodel RxJava Android

问题描述

我对 RxJava 非常陌生,我正在使用它开发一个 Android 应用程序。我正在发出网络请求,我希望我的 Fragment 根据网络返回的数据更新 UI,我正在寻找一种好的“rx”方式来做到这一点。基本上我让我的 Fragment 立即向我的视图模型发射它应该进行服务器调用。我需要进行服务器调用并将该数据通知/发送到 viewModel,以便我可以将其更新到片段。通常(没有 rx),我只是将所有这些数据与变量一起传递,但是如何使用 rx 和 observables 来实现这个数据流呢?

感谢大家。

标签: androidkotlinrx-java

解决方案


创建一个单独的存储库层,仅从您的视图模型访问它。

通过这种方式,您将拥有视图/数据绑定触发请求。

接下来,在 Repository 中进行一些状态管理或在那里存储一些数据(使用 LiveData)

在您的 ViewModel 中,将值分配给存储库中 LiveData 的引用。因此,无论何时您在 Repository 中更新它 - viewModel 都将具有相同的对象。

最后,您可以观察该 viewModel 的 LiveData。在此处输入图像描述

val someData = MutableLiveData<SomeObject>()- 这个在存储库中,现在您可以将任何网络调用结果保存在存储库中。

让您的 ViewModel 包含下一个:val someData= Repository.instance.someData

从片段/活动使用:viewModel.someData.observe(this, {...})


推荐阅读