Android 关于ExpandableListView刷新问题的解决方法
程序员文章站
2024-02-24 18:25:22
正文
首先是最基础的
expandablelistview vlist = (expandablelistview) this.findviewbyid(r.i...
正文
首先是最基础的
expandablelistview vlist = (expandablelistview) this.findviewbyid(r.id.list); elistadapter adapter = new elistadapter(getapplicationcontext(), list); //list 是数据源 vlist.setadapter(adapter); //适配器就不写了, 都懂的 class elistadapter extends baseexpandablelistadapter {}
一般情况下, listview是使用notifydatasetchanged() 更新的
adapter.notifydatasetchanged();
expandablelistview 也是listview, 估计这样是可以的.
可惜现在用的不是listview, 而是expandablelistview! 所以报错了0. 0
java.lang.classcastexception: android.widget.expandablelistconnector
在google 找了资料, 发现是很多都犯这个错误. 解决方法也蛮简单的!
class elistadapter extends baseexpandablelistadapter { public elistadapter(context context, list<t> list) { this.list = list; this.context = context; handler = new handler(){ @override public void handlemessage(message msg) { notifydatasetchanged(); super.handlemessage(msg); } }; } public void refresh() { handler.sendmessage(new message()); } }
只要我们调用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刷新问题的解决方法全部内容了,希望大家多多支持~
推荐阅读
-
Android 关于ExpandableListView去掉里头分割线的方法
-
Android 关于ExpandableListView刷新问题的解决方法
-
关于JSP中文问题的解决方法
-
Android切换至SurfaceView时闪屏(黑屏闪一下)以及黑屏移动问题的解决方法
-
关于Poi读取Excel引发内存溢出问题的解决方法
-
Android开发中调用系统相册上传图片到服务器OPPO等部分手机上出现短暂的显示桌面问题的解决方法
-
关于shiro中部分SpringCache失效问题的解决方法
-
Android Retrofit文件下载进度显示问题的解决方法
-
Android 关于“NetworkOnMainThreadException”问题的原因分析及解决办法
-
浅谈Android中关于静态变量(static)的使用问题