You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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。

修复步骤

  1. 修正ImageModel的实例化逻辑
    将传入的参数从控件ID改为实际的图片资源ID(需确保drawable目录下存在对应图片):

    // 替换为你实际的图片资源ID,比如R.drawable.karan_avatar
    ImageModel model = new ImageModel("karan", false, R.drawable.karan_avatar);
    
  2. 调整图片加载逻辑
    在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状态等
    }
    
  3. 特殊场景处理(可选)
    如果是加载网络图片,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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:24:41