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)是我一直在寻找的,谢谢 –

相关问题