我在一個小項目中需要用到將SD卡中的圖片讀出後,縮略計算後再simpleAdapter進行顯示。在編程過程中,一般來說,在用simpleAdapter適配器時,我們所要顯示的圖片資源都是程序內的本地資源,而且是以資源的ID(Resources)形式來表現的。但是有時候我們需要用這個適配器來顯示網上的遠程圖片時,該如何直接顯示呢?方法是實現ViewBinder()這個接口,在裏面定義數據和視圖的匹配關係。代碼片段如下:
ArrayList<HashMap<String, Object>> listItemImage = getFileItems(files);
String[] from = {"ItemImage","ItemText","ItemCount"};
int[] to = {R.id.listItemImage,R.id.listItemName,R.id.listItemFolderCount};
listAdapter = new SimpleAdapter(ImageActivity.this, listItemImage, R.layout.listview_item, from, to);
/*實現ViewBinder()這個接口*/
listAdapter.setViewBinder(new ViewBinder() {
@Override
public boolean setViewValue(View view, Object data,
String textRepresentation) {
// TODO Auto-generated method stub
if(view instanceof ImageView && data instanceof Bitmap){
ImageView i = (ImageView)view;
i.setImageBitmap((Bitmap) data);
return true;
}
return false;
}
});
listView.setAdapter(listAdapter);
/*動態跟新ListView*/
listAdapter.notifyDataSetChanged();