为列表中项目的每个绑定设置一个新变量
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);
我可以通过绑定 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);