【发布时间】:2023-03-27 00:58:01
【问题描述】:
我来自MVP 模式,现在我正在使用MVVM 模式和RXJava 来执行一些功能,例如在地图中显示我当前的位置。为此,我在我的 MV 中订阅了Disposable,我将获得Location:
(t 是我的位置)
val subscription = locationProvider.lastKnownLocation
.subscribe(Consumer { t -> updateLocationMap(t) })
我的问题是我应该在我的View 中订阅这个Disposable 吗?因为我看到ViewModel 不能在View 中实例化并且知道我不知道如何使用这个Location 对象。
【问题讨论】:
-
使用
Livedata监听 ViewModel 的变化。并在您的视图中注册您的 ViewModel。 -
然后在 LiveData 中转换之前我应该从哪里订阅我的 Disposable?
-
在您的 ViewModel 中订阅它。然后将结果设置为 LiveData 的值
-
在我的情况下,当我订阅 Disposable 时,您如何看到它会返回位置(在这种情况下为 t )。你的意思是我必须创建一个 LiveData
然后在我的订阅中创建一个 LiveData = t ? -
执行以下操作:
val locLiveData = MutableLiveData<Location>()在您的ViewModel中,然后在您的subscrible()函数中将该位置设置为 livedata 值locLiveData.value = location。在视图中注册视图模型后,调用位置 livedata 并开始观察它。
标签: android mvvm rx-java system.reactive android-livedata