可适配图片的ExpandableListView

今天需要实现一个2级树,很不幸的是这颗2级树的Group,就是第一级上有个ImageView,我按照SimpleAdapter的套路把图片的id搞上去发现死活都在抛错:
12-04 06:09:36.228: ERROR/AndroidRuntime(324): java.lang.ClassCastException: android.widget.ImageView
 

根据堆栈来看竟然是SimpleExpandableListAdapter内部出了错,错在转型上,于是跟进去,发现了这段代码:

 

    private void bindView(View view, Map<String, ?> data, String[] from, int[] to) {
	        int len = to.length;

	        for (int i = 0; i < len; i++) {
	            TextView v = (TextView)view.findViewById(to[i]);
	            if (v != null) {
	                v.setText((String)data.get(from[i]));
	            }
	        }
	    }
我靠,这个SimpleExpandableListAdapter也太Simple了吧,竟然吧所有的View都当做TextView来处理了,一点都没有他的兄弟SimpleAdapter的风范,想当年,SimpleAdapter可以自动判断View的类型,自动绑定,实在不得,还给你个ViewBinder...咋地名字差不多,但是能力差这么多捏...-_-|||... 不得,虽然这里可以不用ExList用ListView自己渲染也可以,但这回不得,下次还不是不得?诶,自己改造一个!,于是开工 这第一次我们简单点,就使用个ViewBinder回调一下就得了,下次再来弄自动绑定的
public class MyExpandableListAdapter extends BaseExpandableListAdapter{
	        private void bindView(View view, Map<String, ?> data, String[] from, int[] to) {
	                int len = to.length;

	                boolean isBound = false;
	                for (int i = 0; i < len; i++) {

	                        final View v = view.findViewById(to[i]);

	                        if (v!=null) {
	                final Object _data = data.get(from[i]);
	                String text = _data == null ? "" : data.toString();
	                if (text == null) {
	                    text = "";
	                }
	                               
	                                if (mViewBinder != null) {//如果Binder不为空,使用Binder进行处理
	                                        isBound = mViewBinder.setViewValue(v, data.get(from[i]), text);
	                                }
	                               
	                                if (!isBound) {//如果Binder跳过,使用原来的方法进行处理
	                                        TextView _v = (TextView)v;
	                                        _v.setText((String)data.get(from[i]));
	                                }                               
	                        }
	                }
	        }
	}

ok,Activity中在ViewBinder一下,这里不贴了,上图:

     \    

 

 


转载:http://www.adobex.com/android/source/details/00000438.htm

你可能感兴趣的:(可适配图片的ExpandableListView)