返回

别再只盯着你的View了!ViewModel了解一下!

Android

之前写的文章现在来看也是没啥毛病,ViewModel该聊的基本也都聊到了。因此今天这篇文章更多的是对之前文章的补充:
之前文章地址:Android开发中ViewModel的概念与LiveData与ObservableField的使用

  1. 有一小部分View层控件可以直接与Model层进行数据绑定,尤其是在Model层是开发人员无法控制的情况下(由其他人提供)。该Model层提供的数据很可能是无法直接在View层中使用的,这时候就需要ViewModel将Model层的数据进行转换,使其能够在View层中直接使用。
  2. 有时View层需要展示的数据分散在不同的Model层中,此时就需要ViewModel将这些分散的数据收集起来,然后统一展示给View层。
  3. 当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类型的name属性。然后我们在布局文件中使用DataBinding的方式将name属性与TextView控件进行绑定。这样,当name属性发生变化时,TextView控件的内容也会随之变化。

使用ViewModel可以大大简化View层与Model层之间的交互,使代码更加清晰易懂。因此,在Android开发中,强烈建议使用ViewModel来管理数据。

除了上述内容外,我还可以补充一些关于ViewModel的知识:

  • ViewModel是与Activity或Fragment的生命周期绑定的,这意味着当Activity或Fragment被销毁时,ViewModel也会被销毁。
  • ViewModel可以共享给多个Activity或Fragment,这使得数据可以在不同的Activity或Fragment之间共享。
  • ViewModel可以保存数据,即使Activity或Fragment被销毁,这些数据也不会丢失。

希望这些内容能够对您有所帮助。