PullToRefresh使用详解

原创 2015年11月20日 16:15:21
PullToRefresh是一套实现非常好的下拉刷新库,它支持:
1.ListView
2.ExpandableListView
3.GridView
4.WebView

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


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

<com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/mPullToRefreshListView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:descendantFocusability="blocksDescendants"
        android:divider="@null" />

 2. 在你的Activity代码中进行简单的设置
第一行是找到这个View,最后一行是为它加上刷新的监听器,中间的几行是我对PullToRefreshListView进行一些设置:

mList = (PullToRefreshListView) rootView.findViewById(R.id.expand_list);  
mList.getRefreshableView().setGroupIndicator(null);  
mList.getRefreshableView().setDivider(null);  
mList.getRefreshableView().setSelector(android.R.color.transparent);  
mList.getRefreshableView().setOnGroupClickListener(this);  
mList.setOnRefreshListener(this);
这样就可以下拉刷新了,刷新时需要运行的代码写在哪呢,还有完成刷新时要收起刷新Header,请看下面:
mList.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
			@Override
			public void onRefresh(PullToRefreshBase<ListView> refreshView) {
	 if (!isRefreshing) {  
        isRefreshing = true;  
        updateList(true);  
      } else {  
        mList.onRefreshComplete();  
    }  


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


二、上拉加载

//Mode.PULL_FROM_START 下拉刷新
//Mode.PULL_FROM_END    上拉加载
mList.setMode(Mode.BOTH); //下拉刷新和上拉加载都应用,
mList.getLoadingLayoutProxy(false, true).setPullLabel("上拉加载");  
mList.getLoadingLayoutProxy(false, true).setRefreshingLabel(getString(R.string.loading));  
mList.getLoadingLayoutProxy(false, true).setReleaseLabel(getString(R.string.release_to_load));  


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


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


2.怎么区分下拉/上拉
这里依靠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 (mList.isHeaderShown()) {  
           Log.i("pull-to-refresh","pull-to-refresh");  
            refreshOnlineStatus(true);  
        } else if (mList.isFooterShown()) {  
           Log.i("push-to-refresh","push-to-refresh");    
            loadNextPage();  
        }  
    } else {  
        mList.onRefreshComplete();  
    }  
}  
注意:PullToRefreshListView在使用上有一个BUG,在你的xml layout中,不能一开始将它的visiablity设置为GONE,否则,在代码中设置visiablity为VISIABLE也没有作用。
使用PullToReFreshListView后你会发现没有点击监听事件,如何实现它的点击监听事件呢?

mList.getRefreshableView().setOnItemClickListener()就可以实现点击事件




关于使用了OkHttp和Android-PullToRefresh开源库后如何混淆

本人的一款App由于使用了OkHttp、Android-PullToRefresh、Universal-Image-Loader等开源库,其中Android-PullToRefresh是以librar...
  • u014738140
  • u014738140
  • 2015年04月03日 10:45
  • 4040

PullToFresh的使用

PullToFresh的使用
  • Mymiak
  • Mymiak
  • 2017年11月17日 19:02
  • 93

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

PullToRefresh是一套实现非常好的下拉刷新库,它支持: 1.ListView 2.ExpandableListView 3.GridView 4.WebView 等多种常用的需要刷新的Vie...
  • ueryueryuery
  • ueryueryuery
  • 2013年12月20日 15:51
  • 243707

PullToRefresh的使用的详细用法,一个细节问题

pulltorefresh的细节和问题,pulltorefresh算是一个常用且强大的上拉刷新下拉加载库,我们今天来探讨一下它的细节,...
  • king866
  • king866
  • 2016年05月09日 21:47
  • 1120

PullToRefresh的简单使用

在做android项目的时候,我们经常要用到上拉刷新列表,下拉刷新列表的功能,这里简单介绍一个PullToRefresh的使用。   一,下载PullToRefresh,地址:https://git...
  • chenguang79
  • chenguang79
  • 2015年01月27日 15:00
  • 4704

高仿赶集网上下翻页效果

[github 地址直达](https://github.com/zzz40500/Android-PullToNextLayout)
  • jiankeufo
  • jiankeufo
  • 2015年04月03日 17:47
  • 602

Activtiy完全解析(二、layout的inflate过程)

在上一篇文章《 Activtiy完全解析(一、Activity的创建过程)》中,我们探讨了Activity的启动,从startActivity()到进程创建,再到activity的创建,最后调用onC...
  • u010163442
  • u010163442
  • 2016年09月07日 11:24
  • 2695

用Swift实现淘宝和大众点评的下拉刷新

来自Leo的原创博客,转载请著名出处我的StackOverflow我的Github https://github.com/LeoMobileDeveloper效果淘宝 大众点评 项目地址其中 大...
  • Hello_Hwc
  • Hello_Hwc
  • 2016年07月15日 16:28
  • 4431

pulltorefresh框架的使用心得

studio导入 在NewModule界面选择 打开如下图 open Module Settings 点击app中的Dependencies 中的“+...
  • qq_31079677
  • qq_31079677
  • 2016年04月21日 17:24
  • 791

pulltorefresh依赖

compile 'com.android.support:support-v4:23.3.0' compile 'com.github.userswlwork:pull-to-refresh:...
  • wangyaqian1212
  • wangyaqian1212
  • 2016年10月10日 10:18
  • 891
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PullToRefresh使用详解
举报原因:
原因补充:

(最多只允许输入30个字)