这是一个非常基本的 View 模型
class MainViewModel: ViewModel() {
val text = MutableLiveData<String>()
val person = MutableLiveData<Person>()
}
我正在尝试实现如下所示的双向绑定(bind)
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@={viewModel.text}"/>
这按预期工作,但在绑定(bind)对象时:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@={viewModel.person.name}"/>
我收到一个错误: 表达式 viewModelPersonGetValue.getName() 无法反转:双向绑定(bind)无法解析 java.lang.String 属性“名称”的 setter
看来我遗漏了什么,有什么想法吗?
(我使用的是 Android Studio 3.2 canary 1)
最佳答案
这应该适用于 Android Studio 3.1 及更高版本,只要您不忘记包含
val binding: ActivityMainBinding = ...
binding.viewModel = viewModel
binding.setLifecycleOwner(this) // The editText won't update without this
关于java - Android Architecture Components如何实现对象与ViewModel的双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48657342/