我正在尝试使用Google的新架构组件,尝试使用ViewModel
,LiveData
和DataBinding
获得更多的响应式代码。
基本上,我对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
?
答案 0 :(得分:0)
您可以看到我的存储库,其中我使用DataBinding和MVVM模式进行了所有操作。只需访问https://github.com/xyarim/android-architecture