Android 关于ExpandableListView刷新问题的解决方法
正文
首先是最基础的
ExpandableListViewvList=(ExpandableListView)this.findViewById(R.id.list); EListAdapteradapter=newEListAdapter(getApplicationContext(),list);//list是数据源 vList.setAdapter(adapter); //适配器就不写了,都懂的 classEListAdapterextendsBaseExpandableListAdapter{}
一般情况下,ListView是使用notifyDataSetChanged()更新的
adapter.notifyDataSetChanged();
ExpandableListView也是ListView,估计这样是可以的.
可惜现在用的不是ListView,而是ExpandableListView!所以报错了0.0
Java.lang.ClassCastException:Android.widget.ExpandableListConnector
在Google找了资料,发现是很多都犯这个错误.解决方法也蛮简单的!
classEListAdapterextendsBaseExpandableListAdapter{ publicEListAdapter(Contextcontext,List<T>list){ this.list=list; this.context=context; handler=newHandler(){ @Override publicvoidhandleMessage(Messagemsg){ notifyDataSetChanged(); super.handleMessage(msg); } }; } publicvoidrefresh(){ handler.sendMessage(newMessage()); } }
只要我们调用refresh()方法就可以使用notifyDataSetChanged()了.
可是!!只有GroupView更新!!
ChildView没有更新!惨了....要更新的在ChildView!!
继续靠Google娘!大家都提供很多方法,有一个人说,直接在list添加item再更新就可以了!
我试了一下,没有任何效果.......
查了一查SDK文档,发现Group的伸缩会引起getChildView(int,int,boolean,View,ViewGroup) 的运行!
所以刷新的ChildView的方法很简单.
只有伸缩一次就可以了!连Adapter都不用重写!简单吧?
vList.collapseGroup(groupPosition); vList.expandGroup(groupPosition);
以上就是小编为大家带来的Android关于ExpandableListView刷新问题的解决方法全部内容了,希望大家多多支持毛票票~