android笔记26 - SimpleAdapter 动态显示Bitmap图片

来源:互联网 发布:炎黄网络 服务器怎么样 编辑:程序博客网 时间:2024/05/29 08:36
问题背景:
    在项目中用到SimpleAdapter 显示照片, 但是 SimpleAdapter 默认是静态显示程序内部的本地资源,即加载的是 R.drawable.id 这样的照片。如果我加载的是下载的Bitmap格式的图片,或者是SD卡自己存储的图片,那么这样是显示不出来的。

解决办法是:
 实现 ViewBinder接口,对两种的资源id和bitmap 情况进行说明。
说明代码说下:
SimpleAdapter saImageItems;// 生成适配器的ImageItem <====> 动态数组的元素,两者一一对应saImageItems = new SimpleAdapter(this, lstImageItem,// 数据来源,也就是说网格视图里装载的数据内容R.layout.gridview,// 网格视图里要显示的东西,这里是一副图像+下标文字new String[] { "ItemImage", "ItemText" },// 动态数组与ImageItem对应的子项new int[] { R.id.ItemImage, R.id.ItemText });// 显示ID号与上面的String[]元素一一对应saImageItems.setViewBinder(new ViewBinder() {@Overridepublic boolean setViewValue(View view,Object data,String textRepresentation) {// TODO Auto-generated method stub if((view instanceof ImageView) && (data instanceof Bitmap)) {                  ImageView imageView = (ImageView) view;                  Bitmap bmp = (Bitmap) data;                  imageView.setImageBitmap(bmp);                  return true;              }  return false;}});expandListView.setOnChildClickListener(new OnChildClickListener() {@Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {lstImageItem.clear();ArrayList<HashMap<String,String>> kidsArrayList = new ArrayList<HashMap<String,String>>();int classNum = (groupPosition+1)*100+childPosition+1; kidsArrayList = MainTabActivity.returnDbClassInfo(classNum);int studentNum = kidsArrayList.size();for (int i = 0; i < studentNum; i++) {HashMap<String, Object> map = new HashMap<String, Object>();Bitmap bm = BitmapFactory.decodeFile(kidsArrayList.get(i).get("studentimage")); map.put("ItemImage",bm);// 添加图像资源的IDmap.put("ItemText",kidsArrayList.get(i).get("name") );// 按序号做ItemTexlstImageItem.add(map);}// 添加并且显示gridview.setAdapter(saImageItems);

1 0
原创粉丝点击