我们如何在android中使用数据绑定将图像资源放入ImageView
?
如果pending为true,我想要一个图像,如果pending为false,我想要另一个图像.但它显示错误.我如何实现此功能?
的回答:
限定:
@BindingAdapter({"android:src"}) public static void setImageViewResource(ImageView imageView, int resource) { imageView.setImageResource(resource); }
使用:
像这样设置图像,
我试过这个,它对我有用(buildToolsVersion:24.0.1):
只是app:imageResource
用来替换android:src
,android:src="@{item.avatarResId}"
不起作用,@BindAdapter("android:src")
为它定义一个自定义.
但是使用app:imageResource
不需要@BindAdapter
另外定义,因为ImageView有一个名为的方法setImageResource()
,当你使用时app:imageResource
,它会setImageResource()
自动调用.
如果您想将参数传递给方法,就像@IdRes一样,您可以使用
如果数据模型包含图像的资源ID,则无需以编程方式执行任何操作即可执行此操作.
例:
只需将以下行添加到imageView(我在那里添加代码时无法格式化代码):
android:src="@{ContextCompat.getDrawable(context,roomInfoItem.resId)}"
哪里resId
包含R.drawable.your_image_name
对于这篇伟大的文章:使用数据绑定和毕加索加载图像
有两种方法可以做到:
运用 @BindingAdapter
ObservableField
和定制的毕加索目标
在Android开发人员参考数据绑定指南中,您只能找到第一个.
请阅读这两篇文章.
更多信息:
http://www.mutualmobile.com/posts/using-data-binding-api-in-recyclerview
https://blog.stylingandroid.com/data-binding-part-3/
希望它有所帮助.