这个问题很棘手,打log明明都找了视频缩略图bitmap的路径,但就是显示出来
其实是simpleAdapter自己的问题,它有自己的view绑定规则
可以先看看这个:http://www.cnblogs.com/over140/archive/2010/12/15/1906303.html
在看看这个:http://hi.baidu.com/blue_hmq/blog/item/03baf6ca02cf1614bf09e663.html
其中说道:
SimpleAdapter类:一个使静态数据和在XML中定义的Views对应起来的简单adapter。你可以把list上的数据指定为一个Map范型的ArrayList。ArrayList里的每一个条目对应于list里的一行。Maps包含着每一行的数据。你先要指定一个XML,这个XML定义了用于显示一行的view。你还要指定一个对应关系,这个对应关系是从Map的keys对应到指定的views。绑定数据到views发生在两个阶段:
如果一个simpleAdapter.ViewBinder是可用的,那么SetViewValue(android.view.View,Object,String)要被调用。如果返回true,那么绑定发生了。如果返回false,那么如下views将被按顺序地尝试:
~实现了Checkable的View(如CheckBox),预期的绑定值是boolen
~TextView,预期的绑定值是String,并且SetViewText方法被调用
~ImageView,预期的绑定值是一个资源的id或String。并且SetViewImage方法被调用
如果没有合适的绑定被发现,一个IllegalStateException被抛出。
simpleAdapter果然够静态……泪流满面中
解决方法,自己重写imangView的绑定规则:
看看这个:http://www.anddev.org/listview_simpleadapter_and_bitmaps_-_bug_-t11817.html
adapter.setViewBinder(new MyViewBinder());
public class MyViewBinder implements ViewBinder {
@Override
public boolean setViewValue(View view, Object data, String textRepresentation) {
if( (view instanceof ImageView) & (data instanceof Bitmap) ) {
ImageView iv = (ImageView) view;
Bitmap bm = (Bitmap) data;
iv.setImageBitmap(bm);
return true;
}
return false;
}
}