У меня есть необходимость в similer, давайте рассмотрим пример ниже.Мне нужно передать несколько полей для привязки адаптера.
@BindingAdapter("onClickListeners")
public static void setClicks(View view, View.OnClickListener[] onClickListeners)
Итак, в XML я могу назвать это так?-
onClickListeners="@{() -> handler.oneClicked(), () -> handler.secondClicked()}"
Обратите внимание -
- Массив должен быть динамическим для будущего использования.Поэтому я не могу взять два параметра в адаптере.
- У меня есть несколько полей массивов, поэтому я не могу использовать
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);
}
}
}