调用绑定适配器,没有任何价值

时间:2018-07-30 07:03:39

标签: android android-databinding

只需要一种方法来调用绑定适配器,而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();
            }
        });
    }

让我知道还有其他方法可以实现这一目标

2 个答案:

答案 0 :(得分:1)

您可以这样做

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

答案 1 :(得分:0)

没有任何参数的BindingAdapter就不能使用。您可以做的就是传递null。