我在我的视图模型中有一些数据,当我从LiveData接收到响应时,我设置了这些数据。我可以将这些数据绑定到我的UI上,而不是使用POJO吗?这样,每当我更改视图模型中的数据时,UI也必须随之更改。
我在我的视图模型中有一些数据,当我从LiveData接收到响应时,我设置了这些数据。我可以将这些数据绑定到我的UI上,而不是使用POJO吗?这样,每当我更改视图模型中的数据时,UI也必须随之更改。
最新版本的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}"
setLifecycleOwner
用于 ViewDataBinding(将 ViewModel 绑定到布局)。observe 实际上与 viewbinding 没有任何关系,只是用于监听 ViewModel 中的更改。您可以在此处找到更多信息:https://developer.android.com/reference/android/databinding/ViewDataBinding.html#setLifecycleOwner(android.arch.lifecycle.LifecycleOwner)](setLifecycleOwner) - woodii