在一个适配器SimpleAdapter中如何加载外部图片文件bitmap?

jangill 2011-09-16 06:32:35
我建立了一个适配器, 使用的是SimpleAdapter, 但是如何把/sdcard/中的图片显示到我的应用程序例呢?代码如下:
public SimpleAdapter getMenuDetailAdapter(Context context, int pId) {
SimpleAdapter adapter = null;
// 获取数据库Phones的Cursor
Cursor cur = fetchData(pId);
ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> map;

cur.moveToFirst();
int iColumnIndex = -1;
String sValue = null;
String sImagePath = null;
Bitmap bitmap = null;
File fImageFile = null;
Drawable drawable = null;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;// 返回的bitmap=null.
/*
* If set to true, the decoder will return null (no bitmap), but the
* out... fields will still be set, allowing the caller to query the
* bitmap without having to allocate the memory for its pixels.
*/

for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {
map = new HashMap<String, Object>();

iColumnIndex = cur.getColumnIndex(DISH_INTRO);
sValue = cur.getString(iColumnIndex);
map.put(DISH_INTRO, sValue);

iColumnIndex = cur.getColumnIndex(DISH_PRICE);
sValue = cur.getString(iColumnIndex);
map.put(DISH_PRICE, sValue);

iColumnIndex = cur.getColumnIndex(DISH_UNIT);
sValue = cur.getString(iColumnIndex);
map.put(DISH_UNIT, sValue);

iColumnIndex = cur.getColumnIndex(DISH_CODE);
sValue = cur.getString(iColumnIndex);
// 获取图片资源
// bitmap = BitmapFactory.decodeFile("/sdcard/test.jpg", options);
// //此时返回bm为空
bitmap = null;
sImagePath = "/sdcard/dish_" + sValue + ".jpg";// 读SD卡需要权限

fImageFile = new File(sImagePath);
if (fImageFile.canRead()) {
Log.v("EagleTag", "Read enable.");
} else {
Log.v("EagleTag", "Read disable.");
}
if (fImageFile.canWrite()) {
Log.v("EagleTag", "Write enable.");
} else {
Log.v("EagleTag", "Write disable.");
}

if (!fImageFile.exists()) {
System.out.println("sImagePath:" + sImagePath
+ ", but not exits.");
} else {
System.out.println("sImagePath:" + sImagePath + ", and exits!");
bitmap = BitmapFactory.decodeFile(sImagePath);
// 此时返回bitmap != null, 找到图片文件了
//bitmap转drawable
drawable = new BitmapDrawable(bitmap);//转换一下
}
map.put(DISH_PHOTO, (Drawable)drawable);
//map.put(DISH_PHOTO, (Bitmap)bitmap);

data.add(map);
}

if (cur != null && cur.getCount() >= 0) {
try {
adapter = new SimpleAdapter(context, data, R.layout.griditem,
new String[] { DISH_INTRO, DISH_PRICE, DISH_UNIT, DISH_PHOTO },
new int[] { R.id.tv_dish_intro, R.id.tv_price_num, R.id.tv_unit_name, R.id.griditem_pic });
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}

}

return adapter;

结果出现文字信息了, 没出现图片.
...全文
426 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧