为列表中项目的每个绑定设置一个新变量

setting a new variable to each binding of an item in the list

我可以通过绑定 returns 可绘制 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()}"/>

app:srcVector 是一个 @bindingAdapter,用于将可绘制图像设置到视图。

数据绑定适配器class

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

您正在设置 ID 为 0 的变量,但这并不能识别您要设置的变量。

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

相反,您必须使用 setDrawableInt() 或使用变量的正确 ID BR.drawableInt

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