源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-06-26 09:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android 关于ExpandableListView刷新问题的解决方法
[b]正文[/b] 首先是最基础的
ExpandableListView vList = (ExpandableListView) this.findViewById(R.id.list);
EListAdapter adapter = new EListAdapter(getApplicationContext(), list); //list 是数据源
vList.setAdapter(adapter);

//适配器就不写了, 都懂的
class EListAdapter extends BaseExpandableListAdapter {}
一般情况下, ListView是使用notifyDataSetChanged() 更新的 [b]adapter.notifyDataSetChanged();[/b] ExpandableListView 也是ListView, 估计这样是可以的.   可惜现在用的不是ListView, 而是ExpandableListView! 所以报错了0. 0 [b]Java.lang.ClassCastException: Android.widget.ExpandableListConnector[/b] 在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)  的运行! [b]所以刷新的ChildView 的方法很简单.[/b] 只有伸缩一次就可以了! 连Adapter 都不用重写! 简单吧?
vList.collapseGroup(groupPosition);
vList.expandGroup(groupPosition);
以上就是小编为大家带来的Android 关于ExpandableListView刷新问题的解决方法全部内容了,希望大家多多支持编程素材网~
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部