BindingAdapers делятся параметрами
Я пишу несколько BindingAdapters, и у меня есть два адаптера, которые должны знать одно и то же значение (оба предназначены для одного и того же представления). Поэтому я попробовал это без успеха:
@BindingAdapter({"param1", "param2"})
@BindingAdapter({"param3", "param2"})
Это не возможно? Кажется, что из-под капли param2 теряется, прежде чем компилятор может создать код для второй привязки (в том же экземпляре View).
Вопрос: это просто безумно неправильный способ использовать BindingAdapters?
ЭЙДТ: Вот как я ограничил представление:
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
app:param1="@{...}"
app:param2="@{...}"
app:param3="@{...}"
/>
И я ожидал, что он подойдет и запустит оба обязательных адаптера. Читая документацию, мне кажется, теперь каждый параметр можно использовать только для одного совпадения.
1 ответ
Если я правильно понимаю вашу проблему, вы сможете справиться с ней, определив адаптер привязки для всех трех параметров и передав его другим методам. Подобно этому, вы также будете иметь привязки для пар параметров, доступных, когда один не установлен.
@BindingAdapter({"param1", "param2", "param3"})
public static void bind123(TextView view, String param1, String param2, String param3) {
bind12(param1, param2);
bind23(param2, param3);
}
@BindingAdapter({"param1", "param2"})
public static void bind12(TextView view, String param1, String param2) { ... }
@BindingAdapter({"param2", "param3"})
public static void bind23(TextView view, String param2, String param3) { ... }