Передающий массив адаптера связывания из XML - PullRequest
0 голосов
/ 09 мая 2019

У меня есть необходимость в similer, давайте рассмотрим пример ниже.Мне нужно передать несколько полей для привязки адаптера.

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

Итак, в XML я могу назвать это так?-

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

Обратите внимание -

  1. Массив должен быть динамическим для будущего использования.Поэтому я не могу взять два параметра в адаптере.
  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);
        }
    }
}
...