安东尼罗宾讲座,密桃诚熟时3之密桃仙子,许颂
正文
首先是最基础的
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 studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论