Android 关于ExpandableListView刷新问题的解决方法
#代码知识 发布时间: 2026-01-11
正文

首先是最基础的
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刷新问题的解决方法全部内容了,希望大家多多支持~
代码知识SEO上一篇 : 深入理解NumPy简明教程---数组3(组合)
下一篇 : 谈谈JavaScript中浏览器兼容问题的写法小议
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!