我在我的Android应用程序中使用数据绑定,我正在实现双向数据绑定。 我使用注释@BindingAdapter创建了一个自定义属性,如下所示,
@BindingAdapter({"app:bindingText"})
public static void bindEditText(EditText view, final BindableString bindableString) {
Pair<BindableString, SimpleTextWatcher> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != bindableString) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
SimpleTextWatcher watcher = new SimpleTextWatcher() {
@Override
public void onTextChanged(String newValue) {
bindableString.set(newValue);
}
};
view.setTag(R.id.bound_observable, new Pair<>(bindableString, watcher));
view.addTextChangedListener(watcher);
}
String newValue = bindableString.get();
if (!view.getText().toString().equals(newValue)) {
view.setText(newValue);
}
}
它说无法找到符号变量bound_observable,我对数据绑定有点新意,所以帮助我。
答案 0 :(得分:1)
您是否在资源中声明了R.id.bound_observable
?
<resources>
<item name="R.id.bound_observable" type="id" />
</resources>
任何方式,新版本的DataBinding库都提供像这样的
自己的双向绑定android:text="@={viewModel.bindableString}"