2016-11-21 73 views
0

我正在寫一些BindingAdapters,我有兩個需要知道相同值的適配器(兩者都適用於相同的視圖)。所以我試過這個沒成功:BindingAdapers共享參數

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

這不可能嗎?在編譯器可以爲第二個綁定創建代碼(在同一個View實例上)之前,param2在引擎蓋下看起來會丟失。

問題:這是嘗試使用BindingAdapters的瘋狂錯誤方法嗎?

EIDT:這是我必然的觀點:

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

,我估計它匹配和運行具有約束力適配器。閱讀我現在認爲的文檔,每個參數只能用於一個匹配。

+1

可以請你分享你的xml代碼從你傳遞'param'值嗎? –

+0

你可以給你的問題增加更多的上下文嗎? – tynn

回答

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