CheckedTextView 如何配合 dataBinding 和 VideModel 完成双向绑定定
时间: 2024-03-20 16:41:33 浏览: 232
首先,在 XML 文件中定义一个 CheckedTextView,然后使用 dataBinding 绑定它的 checked 属性到 ViewModel 中的一个 Boolean 变量:
```
<CheckedTextView
android:id="@+id/checkedTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check me"
android:checked="@{viewModel.isChecked}"
/>
```
接下来,在 ViewModel 中定义一个 isChecked 变量,并且为它添加 getter 和 setter 方法:
```
private MutableLiveData<Boolean> isChecked = new MutableLiveData<>();
public LiveData<Boolean> getIsChecked() {
return isChecked;
}
public void setIsChecked(Boolean value) {
isChecked.setValue(value);
}
```
最后,在 Activity 或 Fragment 中将 ViewModel 与 dataBinding 绑定,并且监听 isChecked 变量的变化:
```
binding.setViewModel(viewModel);
binding.checkedTextView.setOnCheckedChangeListener((buttonView, isChecked) -> {
viewModel.setIsChecked(isChecked);
});
viewModel.getIsChecked().observe(this, isChecked -> {
binding.checkedTextView.setChecked(isChecked);
});
```
这样就完成了 CheckedTextView 和 ViewModel 的双向绑定。当 CheckedTextView 的状态改变时,ViewModel 中的 isChecked 变量也会被更新;而当 ViewModel 中的 isChecked 变量改变时,CheckedTextView 的状态也会被更新。
阅读全文