我可以使用数据绑定将UI与我的viewmodel中的数据绑定吗?

时间:2018-02-21 11:41:43

标签: android android-databinding android-architecture-components android-viewmodel

我的viewmodel中有一些数据,我正在设置接收来自livesata的响应。我可以将此数据绑定到我的UI而不是使用pojo吗?因此,每当我更改viewmodel中的数据时,UI也必须更改。

1 个答案:

答案 0 :(得分:3)

使用Beta Channel中提供的最新Android Studio版本(3.1),您可以使用LiveData Objects进行数据绑定。

Here是一篇很好的博文,介绍如何使用viewmodel中的LiveData进行绑定。

这里也是我的一个例子,我在片段中使用它。

viewModel = ViewModelProviders.of(this, viewModelFactory).get(MyViewModel.class);

fragmentBinding = DataBindingUtil.inflate(inflater, R.layout.fragment,container,false);
fragmentBinding.setViewModel(viewModel);
fragmentBinding.setLifecycleOwner(this);

viewModel.getUser().observe(this, user-> {
        // do whatever you want ;)
    });

在您的xml中,您必须使用<layout>

包装所有内容

需要定义变量

<data>
    <variable name="viewModel"  type="myproject.viewmodel.MyViewModel" />
</data>

@ =用于双向绑定,@用于单向绑定

android:text="@={viewModel.user.firstName}"