像这样设置图像,

答案: https : //stackoverflow.com/a/36941125/703225

定义:

@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() 。

阅读这篇文章: 使用Data Binding和Picasso加载图像

有两种方法可以做到这一点:

使用@BindingAdapter

ObservableField &定制毕加索目标

在Android开发人员参考数据绑定指南 ,你会发现只有第一个。

请阅读这两篇文章。

更多信息:

希望它有帮助。

更多信息请点击此处详细信息 使用数据绑定和毕加索加载图像

public class ProfileViewModel { // The URL will usually come from a model (ie Profile) static final String IMAGE_URL = "http://img.androidcookie.com/android/60677654.jpg"; public ObservableField profileImage; private BindableFieldTarget bindableFieldTarget; public ProfileViewModel(Context context) { profileImage = new ObservableField<>(); // Picasso keeps a weak reference to the target so it needs to be stored in a field bindableFieldTarget = new BindableFieldTarget(profileImage, context.getResources()); Picasso.with(context) .load(IMAGE_URL) .placeholder(R.drawable.placeholder) .into(bindableFieldTarget); } public class BindableFieldTarget implements Target { private ObservableField observableField; private Resources resources; public BindableFieldTarget(ObservableField observableField, Resources resources) { this.observableField = observableField; this.resources = resources; } @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { observableField.set(new BitmapDrawable(resources, bitmap)); } @Override public void onBitmapFailed(Drawable errorDrawable) { observableField.set(errorDrawable); } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { observableField.set(placeHolderDrawable); } } }

如果你想传递一个参数到像@ IdRes你可以使用的方法

@BindingAdapter("load_image") public static void loadImage(ImageView view, @IdRes int imageId) { //Logic }

也许你在这里读,记住旧的系统不能处理它

然后

@BindingAdapter({"app:svg"}) public static void setImageViewResource(ImageView imageView, Drawable resource) { imageView.setBackgroundDrawable(resource); }

问题在于所有具有同名设置器的属性。 例如android:x不会工作,如果setX()方法不在那里,如果我们在ImageView上有setSrc()方法,那么你的代码在没有自定义绑定适配器

如果您的数据模型包含图像的资源ID,则可以通过编程方式执行此操作。

例:

只要将下面一行添加到你的imageView中(当我添加它时,我无法格式化代码):

android:src="@{ContextCompat.getDrawable(context,roomInfoItem.resId)}"

其中resId包含R.drawable.your_image_name

public class ProfileViewModel(context: Context, imageUrl : String) { var IMAGE_URL: String? = null var profileImage: ObservableField? = null private var bindableFieldTarget: BindableFieldTarget? = null init { this.IMAGE_URL = imageUrl profileImage = ObservableField() // Picasso keeps a weak reference to the target so it needs to be stored in a field bindableFieldTarget = BindableFieldTarget(profileImage!!, context.getResources()) Picasso.with(context) .load(IMAGE_URL) .placeholder(R.drawable.user) .into(bindableFieldTarget); } class BindableFieldTarget(private val observableField: ObservableField, private val resources: Resources) : Target { override fun onBitmapLoaded(bitmap: Bitmap, from: Picasso.LoadedFrom) { observableField.set(BitmapDrawable(resources, bitmap)) } override fun onBitmapFailed(errorDrawable: Drawable) { observableField.set(errorDrawable) } override fun onPrepareLoad(placeHolderDrawable: Drawable) { observableField.set(placeHolderDrawable) } } }

我们需要将这个imageUrl设置到适配器类中的这个目标,或者你正在使用的任何东西。

val profileViewModel = ProfileViewModel(MainApplication.applicationContext(), items[position].user.profileImageUrl) holder.view.vm.imageUrl.set(profileViewModel.profileImage!!.get())

android 设置图片资源,如何使用DataBinding将Image资源设置为ImageView相关推荐

  1. Android 通过图片资源名字获得图片资源设置在ImageView上

    Android 通过图片资源名字获得图片资源设置在ImageView上 操作 案例 操作 如何通过图片资源名得到图片资源? // 拿到图片名字 String iconName = "weat ...

  2. Android屏幕图片资源大小

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  3. Android中图片资源格式的是,Android 项目图片资源文件的使用,适配以及优化

    Android 项目图片资源文件的使用,适配以及优化 Aandroid,适配,bitmap,bitmapfactory,优化, 2016-05-13 16:52:50 Android 项目中常见的图片 ...

  4. Android开发提升效率之DataBinding——双向绑定

    DataBingding Android开发提升效率之DataBinding--基本使用 Android开发提升效率之DataBinding--进阶开发 Android开发提升效率之DataBindi ...

  5. android的xml置底_Android布局之xml设置

    android:id 为控件指定相应的IDandroid:text 指定控件的文本,置尽量使用strings.xmlandroid:grivity 指定控件的基本位置 ,比如举重,居右,android ...

  6. Android Studio 如何导出和导入自己的常用设置,避免重复制造轮子。加快开发速度...

    Android Studio 如何导出和导入自己的常用设置,避免重复制造轮子.加快开发速度 作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 在使用 A ...

  7. android imap开发,企业邮箱在Android(安卓)系统手机上POP3/IMAP协议如何设置

    企业邮箱在Android(安卓)系统手机上POP3/IMAP协议如何设置 我们已经推出了自己研制的手机客户端,具备高兼容性,不需需配置,输入企业邮箱地址和密码直接登录使用.了解详情> 直接扫码下 ...

  8. android 勿扰模式代码,Android N Zen Mode (勿扰模式)设置流程

    Android N去除了情景模式,取而代之的是勿扰模式.勿扰模式的入口有两处,下拉栏和设置声音里面.下面我们就从设置声音入口,看看勿扰模式的设置流程. 首先,勿扰模式的首页有三种选项,分别是仅允许优先 ...

  9. kodi android 键盘,KODI按键映射,看IPTV按键设置

    KODI按键映射,看IPTV按键设置 2020-04-09 18:10:10 16点赞 76收藏 7评论 KODI播放器功能丰富,其中自定义按键功能也是强大,可以让用户修改各个场景下各个按键的功能,网 ...

最新文章

  1. oracle两表同步java代码,利用DBLink+JOB实现两个Oracle数据库之间的数据同步
  2. [OS复习]进程互斥与同步2
  3. python处理ini文件_python对ini配置文件处理
  4. 一个REST风格的URI设计方案[Blog Web Services]
  5. win10新版本被移除的旧特性
  6. VS2015 设置结构成员对齐
  7. 为什么我不建议你用去 “ ! = null “ 做判空?
  8. Video Target Tracking Based on Online Learning—TLD多目标跟踪算法
  9. html立体音乐相册源码,印记工坊立体音乐相册 v 1.8 官方版|印记工坊立体音乐相册官方版|印记工坊立体音乐相册电脑版_最火软件站...
  10. EOS价格震荡起伏,EOS生态数据不断上行
  11. 信息系统分析与设计 第十章 系统总体设计
  12. 关于密钥和密钥管理的常见问题及解答
  13. js 周期性定时器
  14. python实现图像识别水果_使用Python实现基于图像识别的iOS自动化测试
  15. Creo服务器管理器配置文件,Creo界面设置常用配置文件参数汇总 | 坐倚北风
  16. sap fi清账函数POSTING_INTERFACE*的使用
  17. Oracle数据库客户端安装与配置
  18. 硬件编解码(一)硬件编解码介绍
  19. 10 快速生成树协议RSTP配置
  20. CLR via C#-基元类型、引用类型和值类型

热门文章

  1. ubuntu下安装ipm包
  2. python编程(mysql操作)
  3. 随想录(工业软件和消费级软件的区别)
  4. 随想录(大学给了我们什么)
  5. python 分组箱线图_Python数据科学实践 | 绘图模块4
  6. mybatis 大于_真赞!IDEA中可以这么玩MyBatis,让编码速度飞起!
  7. python中的for语句可以在任意序列_python在循环内任意增加迭代器
  8. mysql读取自增值失败_MySQL添加自增列失败
  9. SQLi LABS Less-34
  10. 数据结构:队列的了解与示例(CPU处理任务的时间)