一般来说,在用simpleAdapter适配器时,我们所要显示的图片资源都是程序内的本地资源,而且是以资源的ID(Resources ID)形式来表现的。但是有时候我们需要用这个适配器来显示网上的远程图片时,该如何直接显示呢?方法是实现ViewBinder()这个接口,在里面定义数据和视图的匹配关系。
首先介绍一下ViewBinder:
SimpleAdapter的外部数据(external clients)可以使用这个类将值绑定到视图。你应该用这个类绑定值到那些不能直接通过SimpleAdapter支持的视图,或者改变通过SimpleAdapter支持绑定的方法的视图。
public abstract boolean setViewValue (View view, Object data, String textRepresentation)
绑定指定数据到指定的视图。 当通过调用ViewBinder绑定数据时,此方法必须返回真。如果这个方法返回假,SimpleAdapter将尝试通过其内部默认的方法绑定数据。
参数
view 要绑定数据的视图
data 要绑定到视图的数据
textRepresentation 一个表示所支持数据的安全的字符串:结果是data.toString()或者空字符串,但不会是null。
返回值
如果数据绑定到视图返回真,否则返回假。
实例代码如下:
- SimpleAdapter simpleAdapter = new SimpleAdapter(this, setData(),
- R.layout.list, new String[] {"Name", "Image" }, new int[] {
- R.id.list_Name, R.id.list_Image });
- simpleAdapter.setViewBinder(new ListViewBinder());
- private class ListViewBinder implements ViewBinder {
- @Override
- public 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;
- }
- }
-