找不到符号变量bound_observable

时间:2016-08-11 12:57:27

标签: android android-databinding

我在我的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,我对数据绑定有点新意,所以帮助我。

1 个答案:

答案 0 :(得分:1)

您是否在资源中声明了R.id.bound_observable

<resources>
    <item name="R.id.bound_observable" type="id" />
</resources>

任何方式,新版本的DataBinding库都提供像这样的

自己的双向绑定
android:text="@={viewModel.bindableString}"