代码之家  ›  专栏  ›  技术社区  ›  Yadynesh Desai

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

  •  4
  • Yadynesh Desai  · 技术社区  · 6 年前

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

    1 回复  |  直到 6 年前
        1
  •  4
  •   woodii Amit    6 年前

    通过Beta频道提供的最新Android Studio版本(3.1),您可以使用LiveData对象进行数据绑定。

    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}"