遇到一个问题,从servlet获取的bitmap位图需要显示在listview里面,但是发现直接传入位图会报错,原来listview只能传入图片id。最后在网上查找到如下方法。
转自:http://hi.baidu.com/jialy1987/item/d736eba9abb9f1278919d3a6
一般来说,在用simpleAdapter适配器时,我们所要显示的图片资源都是程序内的本地资源,而且是以资源的ID(Resources ID)形式来表现的。但是有时候我们需要用这个适配器来显示网上的远程图片时,该如何直接显示呢?方法是实现ViewBinder()这个接口,在里面定义数据和视图的匹配关系。实例代码如下:
SimpleAdapter simple = new SimpleAdapter(
NameQueryActivity.this, items, R.layout.book_name_item,
new String[] { "front","book_id", "book_name", "book_cover",
"book_posation", "book_remaining",
"book_sales", "book_class", "book_contents" },
new int[] { R.id.front,R.id.book_bianhao, R.id.book_mingcheng,
R.id.book_fengmian, R.id.book_weizhi,
R.id.book_shengyu, R.id.book_yishou,
R.id.book_zhonglei, R.id.book_mulu });
class ListViewBinder implements ViewBinder {
@Override
public boolean setViewValue(View view, Object data,
String textRepresentation) {
// TODO Auto-generated method stub
if((view instanceof ImageView) && (data instanceof Bitmap)) {
ImageView imageView = (ImageView) view;
Bitmap bmp = (Bitmap) data;
imageView.setImageBitmap(bmp);
return true;
}
return false;
}
}
simple.setViewBinder(new ListViewBinder());
resultList.setAdapter(simple);