我阅读了许多与ViewModel和LiveData相关的教程,但是我不太明白在MVVM模式中如何在ViewModel类中使用LiveData。提前感谢您的帮助。
我阅读了许多与ViewModel和LiveData相关的教程,但是我不太明白在MVVM模式中如何在ViewModel类中使用LiveData。提前感谢您的帮助。
Android开发常使用ViewModel作为LiveData的容器,例如:
class MyViewModel {
val myLiveData = MutableLiveData<String>()
}
但是,为什么我们不直接使用String类呢?
class MyViewModel {
val myString = "Hello"
}
因为我们想要将观察者模式应用到字符串中。
model.myLiveData.postValue("Echo")
model.myLiveData.observe(this, Observer {
// Show "Echo"
toast(it)
})
为什么我们需要ViewModel呢?因为我们希望在Activity或Fragment上获得相同的ViewModel实例(单例)。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProviders.of(this)[MyViewModel::class.java]
viewModel.myLiveData.observe(this, Observer {
textView.text = it
})
我认为这已经足够让您开始看到ViewModel和LiveData之间的区别了。
ViewModel与带有LiveData和不带有LiveData的ViewModel之间有什么区别?
这取决于你,你是否需要在ViewModel中使用LiveData。
我实际上不理解在MVVM模式下ViewModel类中使用livedata的用途。
了解了ViewModel和LiveData之间的差异后,请继续阅读有关MVVM模式的更多信息。
MVVM中的View Model与Jetpack的ViewModel和LiveData不同。 MVVM中的View Model是一个概念,您可以使用普通Java类创建自己的View Model。只要它符合MVVM的行为即可。
简单来说,livedata 是一个神奇的可观察数据持有类,它还具有生命周期感知功能。
如果你在 viewmodel 中使用 livedata:
livedata 中 setValue 或 postValue 任何内容,你的 UI 将能够观察到该值及其变化并在 UI 中显示。dataBinding 更好地观察 livedata。