Android 关于ExpandableListView刷新问题的解决方法

正文

首先是最基础的

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刷新问题的解决方法全部内容了,希望大家多多支持脚本之家~

时间: 2024-09-16 18:50:53

Android 关于ExpandableListView刷新问题的解决方法的相关文章

Android 关于ExpandableListView刷新问题的解决方法_Android

正文 首先是最基础的 ExpandableListView vList = (ExpandableListView) this.findViewById(R.id.list); EListAdapter adapter = new EListAdapter(getApplicationContext(), list); //list 是数据源 vList.setAdapter(adapter); //适配器就不写了, 都懂的 class EListAdapter extends BaseExpa

Android改变ExpandableListView的indicator图标实现方法_Android

本文实例讲述了Android改变ExpandableListView的indicator图标实现方法.分享给大家供大家参考,具体如下: 1)定义xml文件先,命名为expand_list_indicator.xml <?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"&

关于验证码在IE中不刷新的快速解决方法_javascript技巧

今天在做验证码的时候发现在IE中,验证码不会刷新,而谷歌等其他浏览器没有问题,所以我想到应该是缓存问题,因为IE默认的设置是如果访问地址没变化就不会去获取而是加载缓存中的内容 所以解决方案就是在验证码的切换地址后面加一个随机的参数 例如: <script> //换验证码 function changeimg(){ /* math.random范围是0-1 *999变成0-999 +3000 就是3000-3999 */ var time=Math.round(Math.random()*999

Ajax提交表单页面刷新很快的解决方法

注:使用ajax 提交表单时 type类型最好不用submit 用button合适 <form> <div class="col-md-9 col-sm-9 col-xs-12 col-md-offset-3"> <input type="button" class="btn btn-info" value="重置" onclick="return resetaa()">

Android改变ExpandableListView的indicator图标实现方法

本文实例讲述了Android改变ExpandableListView的indicator图标实现方法.分享给大家供大家参考,具体如下: 1)定义xml文件先,命名为expand_list_indicator.xml <?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"&

jquery ajax多次请求数据时 不刷新问题的解决方法

jquery的ajax在频繁请求数据,或者重复请求数据的时候出现了一个情况,那就是非ie浏览器正常,ie浏览器会设置缓存,导致第二次请求的时候不会刷新,系统报304 not modify, 解决方案: jquery的ajax方法提供配置参数:cache,(只需将属性设置为false即可) 详细: cache:Boolean 默认: true, dataType为"script"和"jsonp"时默认为false如果设置为 false ,浏览器将不缓存此页面. 以上就

Android 关于ExpandableListView去掉里头分割线的方法

关于ExpandableListView, 自己写了个类继承自BaseExpandableListAdapter groups,childs 都弄好了,显示出来的效果跟网上很多demo一样,我现在就是想去掉那个组下面各item间的分割线 有知道的么? ------解决方案-------------------- expandableList.setDivider(null); up,还不行就设置一个透明的颜色. ------解决方案-------------------- 可以的, androi

Android Studio 报错“app:processDebugResources"解决方法

Android Studio 报错"app:processDebugResources"解决方法 Android Studio项目Build的时候报了这么一个错误: Error:Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Pro

Android 7.0行为变更 FileUriExposedException解决方法

Android 7.0行为变更 FileUriExposedException解决方法 当我们开发关于[在应用间共享文件]相关功能的时候,在Android 7.0上经常会报出此运行时异常,那么Android 7.0以下没问题的代码,为什么跑到Android 7.0+的设备上运行就出问题了呢?,这主要来自于Android 7.0的一项[行为变更]! 对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI