Android--Gridview使用SimpleAdapter載入bitmap圖片
阿新 • • 發佈:2019-02-16
在給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來顯示。