Android PullToRefreshListView上拉刷新和下拉刷新

  PullToRefreshListView实现上拉和下拉刷新有两个步骤:

  1、设置刷新方式

     pullToRefreshView.setMode(PullToRefreshBase.Mode.BOTH);//两端刷新
     pullToRefreshView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);//上拉刷新
     pullToRefreshView.setMode(PullToRefreshBase.Mode.PULL_FROM_END);//下拉刷新

  2、如果是上拉刷新或者下拉刷新需要实现OnRefreshListener接口;如果是两端刷新,则setOnRefreshListener需要实现OnRefreshListener2接口

  两端刷新实现:

pullToRefreshView = (PullToRefreshListView) view.findViewById(R.id.pull_to_refresh_listview);
        pullToRefreshView.setMode(PullToRefreshBase.Mode.BOTH);//两端刷新
//        pullToRefreshView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);//上拉刷新
//        pullToRefreshView.setMode(PullToRefreshBase.Mode.PULL_FROM_END);//下拉刷新
        pullToRefreshView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {

            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                refreshType = REFRESH_TYPE_DOWN;
                refreshView.getLoadingLayoutProxy().setRefreshingLabel("正在加载");
                refreshView.getLoadingLayoutProxy().setPullLabel("下拉加载更多");
                refreshView.getLoadingLayoutProxy().setReleaseLabel("释放开始加载");
//                refreshView.getLoadingLayoutProxy().setLastUpdatedLabel("最后加载时间:");

                // Do work to refresh the list here.
                new GetDataTask().execute();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                refreshType = REFRESH_TYPE_UP;
                refreshView.getLoadingLayoutProxy().setRefreshingLabel("正在加载");
                refreshView.getLoadingLayoutProxy().setPullLabel("上拉加载更多");
                refreshView.getLoadingLayoutProxy().setReleaseLabel("释放开始加载");
//                refreshView.getLoadingLayoutProxy().setLastUpdatedLabel("最后加载时间:");
                // Do work to refresh the list here.
                new GetDataTask().execute();
            }
        });

  AsyncTask实现异步加载

private class GetDataTask extends AsyncTask<Void, Void, String[]> {
        @Override
        protected String[] doInBackground(Void... params) {
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return new String[0];
        }

        @Override
        protected void onPostExecute(String[] result) {
            // Call onRefreshComplete when the list has been refreshed.
            pullToRefreshView.onRefreshComplete();

            if(REFRESH_TYPE_DOWN == refreshType){
                Article article = new Article();
                article.setTitle("下拉刷新添加title");
                adapter.insert(article,0);//adapter是一个LinkedList
            }else if(REFRESH_TYPE_UP == refreshType){
                Article article = new Article();
                article.setTitle("上拉刷新添加title");
                adapter.add(article);
            }

            super.onPostExecute(result);
        }
    }

  如果想实现更丰富的效果可修改布局文件参数,如:

<!--
                 ptr:ptrDrawable="@drawable/default_ptr_flip"
                 ptr:ptrAnimationStyle="flip"  flip:翻转  rotate:旋转
        -->
        <!--     ptr:ptrShowIndicator="true"  右上角 右下角出现箭头-->
        <com.handmark.pulltorefresh.library.PullToRefreshListView
            android:id="@+id/pull_to_refresh_listview"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
            ptr:ptrShowIndicator="true"
            android:background="#CCC" />
时间: 2024-09-30 02:47:53

Android PullToRefreshListView上拉刷新和下拉刷新的相关文章

Android ListView实现上拉加载下拉刷新和滑动删除功能_Android

最近项目需要用到可以滑动删除并且带有上拉加载下拉刷新的Listview,查阅了一些资料,大多都是在SwipeMenuListView的基础上去添加头部和底部View,来扩展上拉加载和下拉刷新的功能,不过需要手动的去绘制UI及处理一些动画效果.用起来也不是特别方便.刚好项目中用到PulltorefreshLibrary库,就尝试着扩展了一个PullToRefreshSwipeMenuListView类来实现需求.先看一下效果: 实现步骤 一.组合Pulltorefresh与SwipeMenuLis

Android ListView实现上拉加载下拉刷新和滑动删除功能

最近项目需要用到可以滑动删除并且带有上拉加载下拉刷新的Listview,查阅了一些资料,大多都是在SwipeMenuListView的基础上去添加头部和底部View,来扩展上拉加载和下拉刷新的功能,不过需要手动的去绘制UI及处理一些动画效果.用起来也不是特别方便.刚好项目中用到PulltorefreshLibrary库,就尝试着扩展了一个PullToRefreshSwipeMenuListView类来实现需求.先看一下效果: 实现步骤 一.组合Pulltorefresh与SwipeMenuLis

自定义上拉下拉-android gridview 加头部的自定义下拉刷新,(我做的头部下拉了,)上拉加载,有人有吗

问题描述 android gridview 加头部的自定义下拉刷新,(我做的头部下拉了,)上拉加载,有人有吗 这个只有头部下拉了,gridview没有跟着滑动. 解决方案 PullToRefreshGridView,你去找这个组件,直接用就行了 解决方案二: https://github.com/chrisbanes/Android-PullToRefresh 里面有gridview视图的,可参考,fragment里面一样用,比自己写起来强多了.

Android自定义listview布局实现上拉加载下拉刷新功能_Android

listview实现上拉加载以及下拉刷新的方式有很多.下面是我写的一种自定义的布局,复用性也比较的强.首先就是继承的listview的自定义view.      AutoListView.Java: package com.example.mic.testdemo.view; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.os

Android自定义listview布局实现上拉加载下拉刷新功能

listview实现上拉加载以及下拉刷新的方式有很多.下面是我写的一种自定义的布局,复用性也比较的强.首先就是继承的listview的自定义view. AutoListView.Java: package com.example.mic.testdemo.view; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.os.Bund

上拉记载-上拉加载下拉刷新refresher v2.0

问题描述 上拉加载下拉刷新refresher v2.0 5C 现在支持一个页面多个调用,这句话是什么意思啊,假如我一个页面里有一个大的div,里面有四个小的div,怎么实现让这四个小的div都可以下拉刷新,上拉加载呢× 解决方案 http://www.jq22.com/jquery-info4469 解决方案二: 上拉加载 下拉刷新iOS中tableView的下拉刷新与上拉加载(一)PullToRefreshListView下拉刷新与上拉加载

上拉加载下拉刷新控件WaterRefreshLoadMoreView

上拉加载下拉刷新控件WaterRefreshLoadMoreView 效果: 源码: // // SRSlimeView // @author SR // Modified by JunHan on 13-9-18. // #import <UIKit/UIKit.h> #define kStartTo 0.7f #define kEndTo 0.15f #define kAnimationInterval (1.0f / 50.0f) NS_INLINE CGFloat distansBet

AjaxPro开发四级无刷新联动下拉框

问题描述 我从网上找的AjaxPro开发四级无刷新联动下拉框例子,但是不能正常运行,前两个下拉框能连动,后两个调数据库的老是出不来,提示"AreaEnum未定义"请大家帮帮忙,我弄了两天了不好,急area.aspx代码<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Area.aspx.cs"Inherits="Area"%><!DOC

Android属性动画实现布局的下拉展开效果_Android

在Android的3.0之后,google又提出了属性动画的这样一个框架,他可以更好的帮助我们实现更丰富的动画效果.所以为了跟上技术的步伐,今天就聊一聊属性动画. 这一次的需求是这样的:当点击一个View的时候,显示下面隐藏的一个View,要实现这个功能,需要将V iew的visibility属性设置gone为visible即可,但是这个过程是一瞬间的,并不能实现我们要的效果.所以,属性动画是个不错的方案. 先把效果贴上 第一个:  第二个: 前面的这个是隐藏着,后面这个是显示的.当点击这个箭头