ViewModel和数据绑定

0le*_*leg 8 android

Android已经最近推出的体系结构组件,尤其是一个视图模型,这是

用于存储和管理与UI相关的数据,以便数据在配置更改(例如屏幕旋转)中幸免于难

在Google提供的示例中,ViewModel的使用方式如下:

public class MyActivity extends AppCompatActivity {
    public void onCreate(Bundle savedInstanceState) {
        MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
        model.getUsers().observe(this, users -> {
            // update UI
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

问题: ViewModel如何假设与数据绑定相关联?

我的意思是,在数据绑定的情况下,将会有一个binding为UI提供数据.

会是这样的:

...
model.getUsers().observe(this, users -> {
  // update binding, that will auto-update the UI?
});
...
Run Code Online (Sandbox Code Playgroud)

dzi*_*kyy 2

您可以在布局 xml 文件中声明视图模型类型的变量。在您的 viewmodel 类中实现公共方法,通过这些方法将数据绑定到 ui。

然后你只需要在onCreate中将视图模型设置为绑定即可。当您在数据绑定中设置视图模型实例时,已加载到视图模型中的数据将被设置为重新创建的布局。

如果布局中有回收器视图,您可以在视图模型类中实现一些公共方法,例如 initRecyclerView() ,并在绑定中设置视图模型后在 onCreate() 中调用它,或者也可以通过数据绑定从视图模型设置适配器。