来自XML的绑定适配器传递数组

时间:2019-05-09 18:09:23

标签: android android-layout android-databinding

我有一个类似的需求,让我们假设下面的例子。我需要将多个字段传递给绑定适配器。

@BindingAdapter("onClickListeners")
public static void setClicks(View view, View.OnClickListener[] onClickListeners)

那么在XML中,我可以这样称呼吗? -

onClickListeners="@{() -> handler.oneClicked(), () -> handler.secondClicked()}"

请注意-

  1. 该数组应该是动态的,以备将来使用。所以我不能在Adapter中使用两个参数。
  2. 我有多个数组字段,所以不能使用varargs

要查看用例-

@BindingAdapter(value = {"fullText", "highlightTexts", "highlightEnable", "onClickListeners"}, requireAll = false)
public static void setClickableHighLightedText(TextView tv, String fullText, String[] highlightTexts, boolean highlightEnable, View.OnClickListener[] onClickListeners) {
    tv.setText(fullText);
    if (highlightEnable) {
        for (int i = 0; i < highlightTexts.length; i++) {
            String highlightText = highlightTexts[i];
            Utilities.setClickableHighLightedText(tv, highlightText, onClickListeners.length > i ? onClickListeners[i] : null);
        }
    }
}

0 个答案:

没有答案