全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

android使用PullToRefresh实现下拉刷新和上拉加载

PullToRefresh是一套实现非常好的下拉刷新库,它支持:

1.ListView

2.ExpandableListView

3.GridView

4.WebView

等多种常用的需要刷新的View类型,而且使用起来也十分方便。

demo实例下载

下载完成,将它导入到eclipse中,作为一个library导入到你的工程中就好了。

一、废话少说,下拉刷新Go。

 1.在你的布局文件中加上你想用的View就好了,比如这儿我想用一个支持下拉 刷新的ExpandableListView

<com.handmark.pulltorefresh.library.PullToRefreshExpandableListView 
  android:id="@+id/expand_list" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" /> 

2. 在你的Activity代码中进行简单的设置:

mExpandList = (PullToRefreshExpandableListView) rootView.findViewById(R.id.expand_list); 
mExpandList.getRefreshableView().setGroupIndicator(null); 
mExpandList.getRefreshableView().setDivider(null); 
mExpandList.getRefreshableView().setSelector(android.R.color.transparent); 
mExpandList.getRefreshableView().setOnGroupClickListener(this); 
mExpandList.setOnRefreshListener(this); 

第一行是找到这个View,最后一行是为它加上刷新的监听器,中间的几行是我对ExpandableListView进行一些设置。

这样其实就已经可以下拉刷新了,但刷新时需要运行的代码写在哪呢,还有为什么下拉不会收起来呢,且往下看。

3.下拉刷新时执行的方法onRefresh()

@Override 
public void onRefresh(PullToRefreshBase<ExpandableListView> refreshView) { 
  if (!isRefreshing) { 
    isRefreshing = true; 
    updateList(true); 
  } else { 
    mExpandList.onRefreshComplete(); 
  } 
} 

一般来说我们会开另一个线程去获取数据,所以这儿会加上一个判断,如果已经在获取数据了,就onRefreshComplete(),就是将下拉收起;否则就去开新线程取数据,取完记得也要onRefreshComplete()哦!

二、上拉加载

如果你不想再费时间去自己写一个上拉加载,不妨试一下PullToRefresh自带的上拉效果哦!

PullToRefresh本身支持下拉刷新和上拉刷新,所以我们只需要将上拉刷新改成上拉加载就行了。

1.设置Mode

// set mode to BOTH 
mExpandList.setMode(Mode.BOTH); 
mExpandList.getLoadingLayoutProxy(false, true).setPullLabel(getString(R.string.pull_to_load)); 
mExpandList.getLoadingLayoutProxy(false, true).setRefreshingLabel(getString(R.string.loading)); 
mExpandList.getLoadingLayoutProxy(false, true).setReleaseLabel(getString(R.string.release_to_load)); 

Mode设置为Mode.BOTH后,下拉和上拉都会执行onRefresh()中的方法了。

因为界面上边,我们要显示“下拉刷新”,下边我们要显示“上拉加载”,所以后三行就是改变下边部分的文字,getLoadingLayoutProxy(false, true)方法大家可以自己感受一下。

2.怎么区分下拉/上拉

网上有的同学是用onScrollListener来判断,这样并不严谨,我依靠是header还是footer处于可见状态来区分下拉和上拉,如果是下拉,那header一定是可见的;反之,footer一定是可见的。

但是PullToRefreshExpandableListView并没有提供这样的接口,那我们就来小改一下我们引入的工程吧,很简单:

找到包“com.handmark.pulltorefresh.library”下的PullToRefreshAdapterViewBase.Java这个类,加入两个新接口:

public boolean isHeaderShown() { 
  return getHeaderLayout().isShown(); 
} 
 
public boolean isFooterShown() { 
  return getFooterLayout().isShown(); 
} 

这样就行了哦,重新编译一下这个工程,和你自己的工程。

在onRefresh()中这样来用:

@Override 
public void onRefresh(PullToRefreshBase<ExpandableListView> refreshView) { 
  if (!isRefreshing) { 
    isRefreshing = true; 
    if (mExpandList.isHeaderShown()) { 
      Utils.LOGD("pull-to-refresh"); 
      refreshOnlineStatus(true); 
    } else if (mExpandList.isFooterShown()) { 
      Utils.LOGD("pull-to-load-more"); 
      loadNextPage(); 
    } 
  } else { 
    mExpandList.onRefreshComplete(); 
  } 
} 

很简单吧,这样我们就YD地使用PullToRefresh实现了下拉刷新和上拉加载,LOL,希望多多少少能帮到大家。

=================================================================

更新于2014-07-01

近来发现:

1.实现上拉监听,只需要实现OnRefreshListener2就可以了,同时别忘记setMode(Mode.BOTH) 哦!

2.PullToRefreshListView在使用上有一个BUG,在你的xml layout中,不能一开始将它的visiablity设置为GONE,否则,在代码中设置visiablity为VISIABLE也没有作用。

最后放上一张效果图

demo:下载

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


# pulltorefresh  # 刷新  # pullrefresh  # 加载更多  # 下拉刷新上拉加载  # android使用PullToRefresh框架实现ListView下拉刷新上拉加载更多  # android使用Ultra-PullToRefresh实现下拉刷新自定义代码  # Android使用PullToRefresh完成ListView下拉刷新和左滑删除功能  # Android开源项目PullToRefresh下拉刷新功能详解2  # Android开源项目PullToRefresh下拉刷新功能详解  # Android下拉刷新控件PullToRefresh实例解析  # Android使用PullToRefresh实现上拉加载和下拉刷新效果的代码  # Android实现简单的下拉刷新pulltorefresh  # Android程序开发之使用PullToRefresh实现下拉刷新和上拉加载  # Android PullToRefreshLayout下拉刷新控件的终结者  # Android带刷新时间显示的PullToRefresh上下拉刷新  # 加载  # 很简单  # 设置为  # 想用  # 自己的  # 导入到  # 就行了  # 好了  # 也要  # 我对  # 只需  # 和你  # 上有  # 作为一个  # 就去  # 非常好  # 只需要  # 要将  # 将它  # 就来 


相关文章: 视频网站app制作软件,有什么好的视频聊天网站或者软件?  *服务器网站为何频现安全漏洞?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  简单实现Android文件上传  网站制作需要会哪些技术,建立一个网站要花费多少?  如何快速配置高效服务器建站软件?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何快速建站并高效导出源代码?  建站主机系统SEO优化与智能配置核心关键词操作指南  如何在Windows环境下新建FTP站点并设置权限?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  网站制作模板下载什么软件,ppt模板免费下载网站?  个人网站制作流程图片大全,个人网站如何注销?  平台云上自主建站:模板化设计与智能工具打造高效网站  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何挑选优质建站一级代理提升网站排名?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  建站之星代理如何优化在线客服效率?  重庆市网站制作公司,重庆招聘网站哪个好?  移民网站制作流程,怎么看加拿大移民官网?  如何通过VPS搭建网站快速盈利?  如何挑选高效建站主机与优质域名?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  一键网站制作软件,义乌购一件代发流程?  C++中引用和指针有什么区别?(代码说明)  微课制作网站有哪些,微课网怎么进?  如何选择靠谱的建站公司加盟品牌?  如何快速生成专业多端适配建站电话?  怀化网站制作公司,怀化新生儿上户网上办理流程?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  Android自定义控件实现温度旋转按钮效果  小型网站建站如何选择虚拟主机?  建站之星与建站宝盒如何选择最佳方案?  简历在线制作网站免费版,如何创建个人简历?  网站网页制作专业公司,怎样制作自己的网页?  如何配置支付宝与微信支付功能?  如何通过宝塔面板实现本地网站访问?  如何快速打造个性化非模板自助建站?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  建站之星导航菜单设置与功能模块配置全攻略  公司网站设计制作厂家,怎么创建自己的一个网站?  实现虚拟支付需哪些建站技术支撑?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  建站之星下载版如何获取与安装?  建站之星后台密码遗忘如何找回?  如何快速使用云服务器搭建个人网站?  装修招标网站设计制作流程,装修招标流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。