返回
别再只盯着你的View了!ViewModel了解一下!
Android
2023-12-20 16:04:53
之前写的文章现在来看也是没啥毛病,ViewModel该聊的基本也都聊到了。因此今天这篇文章更多的是对之前文章的补充:
之前文章地址:Android开发中ViewModel的概念与LiveData与ObservableField的使用
- 有一小部分View层控件可以直接与Model层进行数据绑定,尤其是在Model层是开发人员无法控制的情况下(由其他人提供)。该Model层提供的数据很可能是无法直接在View层中使用的,这时候就需要ViewModel将Model层的数据进行转换,使其能够在View层中直接使用。
- 有时View层需要展示的数据分散在不同的Model层中,此时就需要ViewModel将这些分散的数据收集起来,然后统一展示给View层。
- 当View层需要对数据进行修改时,ViewModel可以将这些修改的数据传递到Model层,从而实现数据的双向绑定。
ViewModel的用法非常简单,我们只需要继承ViewModel类,然后在其中定义需要使用的数据,并通过LiveData或ObservableField将这些数据与View层进行绑定即可。
下面是一个简单的例子,演示了如何使用ViewModel来实现数据绑定:
public class MyViewModel extends ViewModel {
private LiveData<String> name = new MutableLiveData<>();
public LiveData<String> getName() {
return name;
}
public void setName(String name) {
this.name.setValue(name);
}
}
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewModel.name}" />
在上面的例子中,我们定义了一个名为MyViewModel的ViewModel类,并在其中定义了一个LiveData
使用ViewModel可以大大简化View层与Model层之间的交互,使代码更加清晰易懂。因此,在Android开发中,强烈建议使用ViewModel来管理数据。
除了上述内容外,我还可以补充一些关于ViewModel的知识:
- ViewModel是与Activity或Fragment的生命周期绑定的,这意味着当Activity或Fragment被销毁时,ViewModel也会被销毁。
- ViewModel可以共享给多个Activity或Fragment,这使得数据可以在不同的Activity或Fragment之间共享。
- ViewModel可以保存数据,即使Activity或Fragment被销毁,这些数据也不会丢失。
希望这些内容能够对您有所帮助。