Android中ImageView设图资源触发Resources$NotFoundException问题
问题诊断与解决方案
根因分析
你传入ImageModel的R.id.iv_image_thumbnail是布局中控件的ID,而非Drawable资源(如R.drawable.xxx)的ID。系统尝试将这个ID当作Drawable资源加载时,发现它的资源类型为控件ID(日志中TypedValue{t=0x12}对应ID类型),不符合Drawable的资源类型要求,因此抛出Resources$NotFoundException。
修复步骤
修正ImageModel的实例化逻辑
将传入的参数从控件ID改为实际的图片资源ID(需确保drawable目录下存在对应图片):// 替换为你实际的图片资源ID,比如R.drawable.karan_avatar ImageModel model = new ImageModel("karan", false, R.drawable.karan_avatar);调整图片加载逻辑
在Adapter的ViewHolder绑定逻辑中,获取ImageView实例后,用ImageModel存储的资源ID设置图片:// 示例:RecyclerView Adapter的onBindViewHolder方法 @Override public void onBindViewHolder(ImageViewHolder holder, int position) { ImageModel item = mList.get(position); // 通过ViewHolder拿到布局中的ImageView holder.ivImageThumbnail.setImageResource(item.getId()); // 其他绑定逻辑:设置name、favorite状态等 }特殊场景处理(可选)
如果是加载网络图片,ImageModel的id字段应改为存储图片URL,此时需使用Glide/Picasso等图片加载库:// 修改ImageModel的字段为String类型存储URL public class ImageModel { private String name; private boolean favorite; private String imageUrl; // 构造方法、getter/setter对应修改 } // Adapter中用Glide加载 Glide.with(context) .load(item.getImageUrl()) .into(holder.ivImageThumbnail);
内容的提问来源于stack exchange,提问作者Sidharth Mudgil
相关产品推荐
相关产品推荐

