0

我可以通過綁定返回可繪製int(R.drawable)的方法調用來將資源傳遞給佈局。爲列表中的項目的每個綁定設置一個新變量

我想通過綁定變量本身到佈局上來做到這一點。

ListFragment.java

public void bindVariables(ListViewBinding binding) { 

    // trying to bind this variable onto layout 
    int drawableInt = 0; 
    binding.setVariable(drawableInt, R.drawable.item1Image); 

    binding.setmyService(this.myService); 

    } 

ItemInList.xml

<data> 
    <variable name="drawbleInt" type="java.lang.Integer"/> 
    <variable name="myService" type="com.myService"/> 
</data> 

    **// trying to use the variable set in fragment ** 

<ImageView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     app:srcVector="@{ drawableInt}"/> 

**//this works - using service variable** 

<ImageView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     app:srcVector="@{ myService.drawableInt()}"/> 

應用程式:srcVector是@bindingAdapter到繪製的圖像設置爲視圖。

DataBindingAdapter類

@BindingAdapter("app:srcVector") 
public static void setSrcVector(ImageView view, @DrawableRes int drawable){ 
    view.setImageResource(drawable); 
} 
+0

什麼是'srcVector'? – pskink

+0

綁定適配器設置可繪製圖像的視圖 –

+0

最新錯誤的android:src'? – pskink

回答

1

你設置id爲0的變量,但這並不確定要設置的變量。

int drawableInt = 0; 
binding.setVariable(drawableInt, R.drawable.item1Image); 

相反,你不得不使用setDrawableInt()或使用可變BR.drawableInt的正確的ID。

binding.setDrawableInt(R.drawable.item1Image); 
binding.setVariable(BR.drawableInt, R.drawable.item1Image); 
+0

變量標識(BR)是我一直在尋找的,謝謝 –

相關問題