当前位置: 移动技术网 > IT编程>移动开发>Android > Android 关于ExpandableListView刷新问题的解决方法

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

安东尼罗宾讲座,密桃诚熟时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刷新问题的解决方法全部内容了,希望大家多多支持移动技术网~

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网