Android--Gridview使用SimpleAdapter加载bitmap图片

来源:互联网 发布:郑和宝船有多大 知乎 编辑:程序博客网 时间:2024/06/12 01:38

在给Gridview设置Item的时候,需要填充图片和文本两个Item,若是采用SimpleAdapter来加载Gridview的话,直接传入本地的图片资源ID是可以正常显示的。但是如果要显示bitmap资源的话,则需要在set之前通过setViewBinder这个接口转换一下,否则可能会提示无法decode资源,或者提示目录或资源不存在。


Bitmap bitmap = imageLoader.getBitmap(url);//通过网络或者缓存得到的图片资源        HashMap<String, Object> map = new HashMap<String, Object>();        if(url!=""){               map.put("ItemName",allBean.getEnName());               map.put("ItemImage", bitmap);//直接传入bitmap资源               map.put("ItemText", allBean.getTitle());               meumList.add(map);        }SimpleAdapter saItem = new SimpleAdapter(getContext(),                meumList, <span style="white-space:pre"></span>//数据源                R.layout.item, <span style="white-space:pre"></span>//xml实现                new String[]{"ItemImage", "ItemText"}, <span style="white-space:pre"></span>//对应map的Key                new int[]{R.id.ItemImage, R.id.ItemText});  <span style="white-space:pre"></span>//对应R的Id
//以下方法通过setViewBinder接口将bitmap转化一下 这一步很重要!
saItem.setViewBinder(new SimpleAdapter.ViewBinder() {            @Override            public boolean setViewValue(View view, Object bitmapData, String s) {                if(view instanceof ImageView && bitmapData instanceof Bitmap){                    ImageView i = (ImageView)view;                    i.setImageBitmap((Bitmap) bitmapData);                    return true;                }                return false;            }        });
//添加Item到网格中</span>
gridview.setAdapter(saItem);</span>


这样转化之后就可以正常显示远程图片了,此方法同样适用于从SD卡或者本地文件读取图片后,通过SimpleAdapter来显示。

0 0
原创粉丝点击