1. 程式人生 > >Android--Gridview使用SimpleAdapter載入bitmap圖片

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來顯示。