Android mvvm livedata和数据绑定

时间:2018-11-22 22:51:22

标签: android mvvm android-databinding android-architecture-components android-livedata

我正在尝试使用Google的新架构组件,尝试使用ViewModelLiveDataDataBinding获得更多的响应式代码。

基本上,我对ViewModel的想法是只拥有一个类型为Model的字段(用于记录的用户,因为我们代表的是用户个人资料屏幕)。所以我的ViewModel类是:

class ViewModel : ViewModel() {

var model = MutableLiveData<User>()

我的Model类是:

class User(var name: String, var lastName: String, var age: Int)

在布局文件中,我尝试使用Model插件将DataBinding上的字段绑定到视图中。问题在于,由于我的ViewModel有一个MutableLiveData<User>,因此我无法(通过xml绑定)访问User类内部的字段(名称,lastName ...)。

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

<data>

    <variable
        name="viewModel"
        type="com.github.andromedcodes.mvvmtutorial.ViewModel" />
</data>

<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/text_holder"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="@{viewModel.user.name}"/>
</RelativeLayout>
</layout>

是否有可能做到这一点?最好是使用一个ViewModel带有单独的字段(字符串,整数,任意...)还是重新使用Model

1 个答案:

答案 0 :(得分:0)

您可以看到我的存储库,其中我使用DataBinding和MVVM模式进行了所有操作。只需访问https://github.com/xyarim/android-architecture