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

在给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来显示。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值