You need to enable JavaScript to run this app. Android Studio ListView从JSON加载成员列表时成员图片无法显示求助
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio ListView从JSON加载成员列表时成员图片无法显示求助

图片空白问题排查与修复

根因定位

  • 写入JSON的 @drawable/xxx 是XML布局专属的资源引用语法,无法被Java层的SimpleAdapter直接识别。SimpleAdapter默认绑定ImageView的逻辑仅支持两种输入:int类型的Drawable资源ID、可解析的图片Uri路径。传入的字符串会被当成无效Uri解析,最终加载为空图
  • 原数据结构使用 HashMap<String, String> 存储内容,Drawable资源ID为int类型,类型不匹配导致图片绑定链路中断

修复实现

  1. 调整数据集合泛型,兼容int类型的资源存储:
    将原有 ArrayList<HashMap<String, String>> listItems = new ArrayList<>(); 修改为 ArrayList<HashMap<String, Object>> listItems = new ArrayList<>();
  2. 解析JSON时,将字符串形式的资源引用转换为实际的int资源ID,替换原有直接存字符串的逻辑:
String memberimageStr = obj.getString("memberimage");
// 剥离@drawable/前缀,提取图片文件名
String imageName = memberimageStr.replace("@drawable/", "");
// 通过资源系统匹配对应的drawable资源ID
int imageResId = getResources().getIdentifier(imageName, "drawable", getPackageName());
// 将int类型的资源ID存入Map,而非原字符串
listItem.put("memberimage", imageResId);
  1. 给SimpleAdapter设置自定义ViewBinder,手动处理ImageView的绑定逻辑:
SimpleAdapter adapter = new SimpleAdapter(this, listItems, R.layout.main_list_item_layout,
        new String[]{"serialno","memberimage","membername","farmacyname","mobileno","address"},
        new int[]{R.id.serialTextViewId,R.id.imageViewId,R.id.nameTextViewId,
                R.id.shopNameTextViewId,R.id.mobileNoTextViewId,R.id.addressTextViewId});
// 新增绑定逻辑
adapter.setViewBinder(new SimpleAdapter.ViewBinder() {
    @Override
    public boolean setViewValue(View view, Object data, String textRepresentation) {
        // 匹配图片控件和int类型的资源数据
        if (view instanceof ImageView && data instanceof Integer) {
            ((ImageView) view).setImageResource((Integer) data);
            return true; // 标记手动完成绑定,跳过默认逻辑
        }
        // 文本类控件沿用默认绑定逻辑,无需修改
        return false;
    }
});
listview.setAdapter(adapter);

校验注意事项

  • 必须确认 res/drawable目录下存在名为tojib的图片文件,文件名需符合Android资源命名规范(仅小写字母、数字、下划线,无大写字符或特殊符号),否则getIdentifier会返回0,导致图片加载失败
  • 原有JSON结构无需调整,上述逻辑可兼容现有@drawable/xxx格式的字段值

内容的提问来源于stack exchange,提问作者Tojibul Islam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 10:54:00