Android从iiti数据库获取图片名并显示至ImageView的代码咨询
问题分析与修复方案
从你的代码和业务描述来看,核心问题是调用了错误的实体类方法来获取图片名称:你数据库中存储Drawable图片名的字段是ImgName,但代码里却误用了iiti.getLatLat()来生成资源ID,这必然找不到对应的图片资源。
修正后的完整代码
TextView descText = (TextView) findViewById(R.id.descriptionText); descText.setText(iiti.getneighborhood() + "\n"); ImageView iv = (ImageView) findViewById(R.id.imageView); // 替换为对应ImgName字段的getter方法(请根据你的实体类实际命名调整) String imgName = iiti.getImgName(); // 增加空值与资源存在性判断,避免崩溃 if (imgName != null && !imgName.isEmpty()) { int resourceId = getResources().getIdentifier(imgName, "drawable", getPackageName()); if (resourceId != 0) { iv.setImageResource(resourceId); } else { // 资源不存在时设置默认占位图(需提前在drawable中添加default_image) iv.setImageResource(R.drawable.default_image); } } else { // 图片名为空时设置默认占位图 iv.setImageResource(R.drawable.default_image); }
关键注意事项
- 匹配实体类getter方法:确保你调用的是对应
ImgName字段的getter方法,比如如果实体类定义的是public String getImageName(),就替换成这个方法名,必须和数据库字段的映射逻辑一致。 - 遵守资源命名规则:Drawable文件夹内的图片文件名只能包含小写字母、数字、下划线和点号,不能有大写字母或特殊字符,否则
getIdentifier()会返回0(代表找不到资源)。 - 异常场景处理:必须添加空值和资源存在性判断,避免因图片名缺失、拼写错误导致的空指针异常或无效资源加载,设置默认图能保证界面的完整性。
内容的提问来源于stack exchange,提问作者Rakan Habab
相关产品推荐
相关产品推荐

