4

这是一个非常基本的视图模型

class MainViewModel: ViewModel() {
    val text = MutableLiveData<String>()
    val person = MutableLiveData<Person>()
}

我正在尝试实现两种方式绑定,如下所示

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@={viewModel.text}"/>

这可以按预期工作,但是在绑定对象时:

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@={viewModel.person.name}"/>

我收到一个错误:无法反转表达式 viewModelPersonGetValue.getName():双向绑定无法解析 java.lang.String 属性“名称”的设置器

看来我错过了一些东西,有什么想法吗?

(我使用的是 Android Studio 3.2 canary 1)

4

1 回答 1

3

这应该适用于 Android Studio 3.1 及更高版本,只要您不要忘记包含

val binding: ActivityMainBinding = ...
binding.viewModel = viewModel 
binding.setLifecycleOwner(this) // The editText won't update without this
于 2018-07-12T15:46:13.430 回答