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

4

我在我的视图模型中有一些数据,当我从LiveData接收到响应时,我设置了这些数据。我可以将这些数据绑定到我的UI上,而不是使用POJO吗?这样,每当我更改视图模型中的数据时,UI也必须随之更改。


请详细说明您想要实现什么。 - Apoorv Singh
是的,使用 Android Studio 3.1。 - pskink
1个回答

4

最新版本的Android Studio(3.1)已经在Beta频道中发布,您可以使用LiveData对象进行数据绑定。

这里有一篇关于如何从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}"

1
setLifecycleOwner 用于 ViewDataBinding(将 ViewModel 绑定到布局)。observe 实际上与 viewbinding 没有任何关系,只是用于监听 ViewModel 中的更改。您可以在此处找到更多信息:https://developer.android.com/reference/android/databinding/ViewDataBinding.html#setLifecycleOwner(android.arch.lifecycle.LifecycleOwner)](setLifecycleOwner) - woodii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接