栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android ExpandableListView实现下拉刷新和加载更多效果

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android ExpandableListView实现下拉刷新和加载更多效果

支持下拉刷新和加载更多的ExpandableListView,供大家参考,具体内容如下

模拟器有点卡,滑动的时候鼠标不方便

怎么用:

XML中声明



  

UI中配置下拉刷新的回调以及是否支持下拉和加载更多

expandableListView = (SExpandableListView)     
    findViewById(R.id.elv_coupon);
    // 在设置适配器之前设置是否支持下拉刷新
    expandableListView.setLoadingMoreEnabled(true);
    expandableListView.setPullRefreshEnabled(true);
    expandableListView.setAdapter(couponAdapter);

设置下拉刷新和加载跟多的回调接口

expandableListView.setmLoadingListener(new SExpandableListView.LoadingListener() {
      @Override
      public void onLoadMore() {
 // 模拟加载更多
 isPull = false;
 // 这里应该在项目中请求,这里用延时模拟接口请求
 loadCount++;
 Message msg = handler.obtainMessage();
 msg.arg1 = loadCount;
 handler.sendMessageDelayed(msg, 2000);
 Log.e("TAG---HANDLER:", loadCount + "-->");
      }

      @Override
      public void onRefresh() {
 isPull = true;
 loadCount++;
 // 模拟接口请求下拉刷新
 Message msg = handler.obtainMessage();
 msg.arg1 = loadCount;
 handler.sendMessageDelayed(msg, 2000);
 Log.e("TAG---HANDLER:", loadCount + "-->");
      }
    });



   private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
      super.handleMessage(msg);
      // 模拟接口回复数据,加入下拉刷新次数为6次的话我们就认为没有更多了
      if (loadCount > 6) {
 expandableListView.refreshComplete();
 expandableListView.setNoMore(true);
      } else {
 addLoadMoreData();
 if (isPull) {
   expandableListView.refreshComplete();
 }
 couponAdapter.notifyDataSetChanged();
 // 是不是全部展开,根据需求设置
// expanedAll();
      }
      Log.e("TAG---收到消息:", loadCount + "-->");

    }
  };

简单看下实现过程

  • 自定义ExpandableListview
  • 重写onTouch事件
  • 给自定义的view添加滑动监听事件
  • 初始化的时候给View添加header 和 footer 用来下拉刷新
// 这里在自定view构造函数中调用的增加header和footer的代码,注意下两种添加方式的区别,详情见注释和源代码
 private void initSE(Context context) {
    
    loadMoreView = LayoutInflater.from(context).inflate(R.layout.item_footer_view, this, false);
    loadMorePb = (ProgressBar) loadMoreView.findViewById(R.id.pb_loading);
    loadMoreDesc = (TextView) loadMoreView.findViewById(R.id.tv_loadmore_desc);
  }

  @Override
  public void setAdapter(ExpandableListAdapter adapter) {
    if (pullRefreshEnabled) {
      mRefreshHeader = new ArrowRefreshHeader(getContext());
      mRefreshHeader.setProgressStyle(ProgressStyle.LineScale);
      
      mRefreshHeader.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT));
      addHeaderView(mRefreshHeader);
    }
    if (loadingMoreEnabled) {
      addFooterView(loadMoreView);
    }
    super.setAdapter(adapter);
  }

源代码下载地址:ElongGradleTaskDemo

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/155960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号