您的位置:首页 > 移动开发 > Android开发

ListView显示SD卡中的图片

2013-05-18 12:45 120 查看
在Android中使用ListView时,由于ListView的每一个Item的布局相同,且不是很复杂,于是适配器准备用SimpleAdapter,但每个Item需要有一个ImageView控件来显示图片,SimpleAdapter的构造器中有一个List<Map<String, ?>>类型的参数来决定绑定到Adapter上的数据。但是要绑定图片时必须使用图片资源的id,使用Drawable对象和Bitmap对象均会抛出resolveUri failed on bad bitmap uri: android.graphics.drawable.BitmapDrawable@485d7dd0
错误,可是想要显示的图片在SD卡中,并不在drawable资源文件夹中,没有对应的id,怎么办呢?于是就谁用的SimpleAdapter的setViewBinder()方法,如下:

adapter.setViewBinder(new ViewBinder(){
public boolean setViewValue(View view,Object data,String textRepresentation){
if(view instanceof ImageView){
ImageView iv=(ImageView)view;
iv.setImageDrawable((Drawable)data); //注意,此处要强制转换成Drawable类型,因为下面的getData()方法放入的是Drawable类型
return true;
}
else
return false;
}
});

getData()方法,用来告诉适配器所要绑定的数据:

public List<Map<String, Object>> getData(List<PIC> picList) {
//PIC为自定义实体类
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (PIC pic : picList) {
String comment = pic.getComment();
Map<String, Object> map = new HashMap<String, Object>();
map.put("txt", comment);
String path = Environment.getExternalStorageDirectory()
.getAbsolutePath()
+ File.separator + "a.png";
map.put("img", new BitmapDrawable(BitmapFactory.decodeFile(path)));		//通过SD卡中的图片路径构造一个Drawable对象
list.add(map);

}
return list;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息