首页 > 解决方案 > 调用没有任何值的绑定适配器

问题描述

只是想在 xml 中没有任何值的情况下调用绑定适配器。

例子 :

XML

<android.support.v7.widget.AppCompatSpinner
                            android:id="@+id/spinner"
                            android:layout_width="match_parent"
                            android:layout_height="@dimen/spinner_height"
                            android:background="@drawable/background"
                            app:performClickOnFocus="@{true}"/>

BindingAdater 代码

 @BindingAdapter({"app:performClickOnFocus"})
    public static void performClickOnSpinner(final AppCompatSpinner spinner, boolean arg) {
        spinner.setOnFocusChangeListener((v, hasFocus) -> {
            if (hasFocus) {
                spinner.performClick();
            }
        });
    }

预期的代码应该没有布尔值。

像下面

 @BindingAdapter({"app:performClickOnFocus"})
    public static void performClickOnSpinner(final AppCompatSpinner spinner) {
        spinner.setOnFocusChangeListener((v, hasFocus) -> {
            if (hasFocus) {
                spinner.performClick();
            }
        });
    }

让我知道有没有其他方法可以实现这一点

标签: androidandroid-databinding

解决方案


你可以这样做,

/**
* Use example:
* app:showDatePicker="@{null}"
*/
@BindingAdapter("showDatePicker")
fun TextView.showDatePicker(dummy: Any?) {
    // ...
}

推荐阅读