博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
可适配图片的ExpandableListView
阅读量:6602 次
发布时间:2019-06-24

本文共 2246 字,大约阅读时间需要 7 分钟。

hot3.png

今天需要实现一个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
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
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

转载于:https://my.oschina.net/androidcode/blog/105110

你可能感兴趣的文章
[Android组件化]组件化数据分享
查看>>
# Ruby 数据抓取写入 xls (unirest, nokogiri, spreadsheet)
查看>>
[转]23个最有用的Elasticsearch检索技巧
查看>>
你必须知道的HTTP基本概念
查看>>
当下拉列表数据过大时,该如何应对?
查看>>
使用OpenGrok搭建 可搜索可跳转的源码 阅读网站
查看>>
HTML5开发中的javascript闭包
查看>>
[译] 如何使用 HTTP Headers 来保护你的 Web 应用
查看>>
Android ContentProvider调用报错"Bad call:..."及相关Binder权限问题分析
查看>>
你真的会用strong-weak dance吗?
查看>>
ionic3 教程(二)登录页制作
查看>>
Python正则表达式初识(四)
查看>>
C++课大作业 魔兽世界Part 2
查看>>
不明恶意攻击致<搜狗搜索><搜索结果>跳转<百度搜索>技术原理分析
查看>>
Java并发系列—工具类:CyclicBarrier
查看>>
不务正业的前端之SSO(单点登录)实践
查看>>
android 一套代码多用 以及 多套代码用于一个项目
查看>>
HashMap 之元素删除
查看>>
Cocos Creator 实现画板(你画我猜)
查看>>
springmvc+dubbo整合学习
查看>>