2016-11-21 4 views
0

Я пишу несколько BindingAdapters, и у меня есть два адаптера, которые должны знать одинаковое значение (оба предназначены для одного и того же вида). Поэтому я пробовал это без успеха:BindingAdapers обмениваются параметрами

@BindingAdapter({"param1", "param2"}) 
@BindingAdapter({"param3", "param2"}) 

Разве это невозможно? Кажется, что под капотом каким-то образом param2 теряется, прежде чем компилятор сможет создать код для второго привязки (в том же экземпляре View).

Вопрос: Это просто безумно неправильный способ использовать BindingAdapters?

Eidt: Это, как я связала вид:

<TextView 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      app:param1="@{...}" 
      app:param2="@{...}" 
      app:param3="@{...}" 
/> 

И я ожидал, чтобы соответствовать и работать как обязательные адаптеры. Теперь, прочитав документацию, мне кажется, что каждый параметр может использоваться только для одного совпадения.

+1

Вы можете поделиться своим кодом xml с того места, где вы передаете значения «param»? –

+0

Не могли бы вы добавить больше контекста на свой вопрос? – tynn

ответ

1

Если я правильно понимаю вашу проблему, вы сможете решить проблему, указав адаптер привязки для всех трех параметров и делегируя его другим методам. Подобным образом вы также будете иметь привязки для пар param, доступных, если они не установлены.

@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) { ... }