我有一个类似的需求,让我们假设下面的例子。我需要将多个字段传递给绑定适配器。
@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);
}
}
}