PullToRefresh------ListView的使用

第一步 :写出布局文件的设置

  <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/pull_refresh_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:cacheColorHint="#00000000"    //设置背景透明
        android:divider="#19000000"      //分割线颜色
        android:dividerHeight="4dp"     //分割线高度
        android:fadingEdge="none"   // 设置上边和下边没有黑色的阴影
        android:fastScrollEnabled="false"       //是不是允许快速滑动
        android:footerDividersEnabled="false"    //底部没分割线
        android:headerDividersEnabled="false"     //头部没分割线
        android:smoothScrollbar="true"    //显示变化滚动条高度

    /*  ptr:ptrDrawable="@drawable/default_ptr_flip"   //上拉下拉图标
        ptr:ptrAnimationStyle="rotate"         //动画效果 提供了两个值 flip和rotate 默认为rotate
        ptr:ptrRefreshableViewBackground    //设置整个mPullRefreshListView的背景色
        ptr:ptrHeaderBackground="#383838"         //上拉下拉时头部的背景色
        ptr:ptrHeaderTextColor="#FFFFFF"        //上拉下拉时 文字颜色
        ptr:ptrHeaderSubTextColor    //设置头部view副标题文字的颜色
        ptr:ptrMode                //模式pullFromStart(上拉刷新):pullFromEnd(下拉刷新):both;
        ptrScrollingWhileRefreshingEnabled      //刷新的时候,是否允许ListView或GridView滚动。觉得为true比较好
        // 决定了Header,Footer以何种方式加入mPullRefreshListView,
        //   true为headView方式加入,就是滚动时刷新头部会一起滚动。
        ptrListViewExtrasEnabled

    *//>

第二步 使用 ,先得到mPullRefreshListView  初始化的设置

   private int currentPage =1;   第一次进来的时候加载第一页的数据
    initData(1);
    //mPullRefreshListView.setMode(Mode.PULL_FROM_END);//只支持上拉
    //mPullRefreshListView.setMode(Mode.PULL_FROM_START);//只支持下拉
    mPullRefreshListView.setMode(Mode.BOTH);//两端刷新
    mPullRefreshListView.getLoadingLayoutProxy(false, true).setPullLabel("上拉加载");
    mPullRefreshListView.getLoadingLayoutProxy(false, true).setRefreshingLabel("加载中");
    mPullRefreshListView.getLoadingLayoutProxy(false, true).setReleaseLabel("松开加载更多数据");

      这里是监听的配置
    mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {  //注意这里用的2
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                Toast.makeText(getApplicationContext(), "下拉刷新", Toast.LENGTH_LONG).show();
                 //时间
                String label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(),
                            DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);
                refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);//加上时间
                initData(currentPage)   //加载数据
            }
            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                Toast.makeText(getApplicationContext(), "上拉获取更多", Toast.LENGTH_LONG).show();
                  currentPage    = 1;
                  initData(currentPage);  // 下拉刷新
            }

    });

 加载数据的类 

private void initData(int page) {
        MessageListModel.get(toId + "", page).done(new ICallback() {
            @Override
            public void success(String response) {
                Gson gson = new Gson();
                 //解析json
                SearchResultBean searchResultBean = gson.fromJson(response, SearchResultBean.class);
                if (null != searchResultBean) {
                    if (null == adapter) {  // 第一次
                        adapter = new AddProductAdapter(instance);   //当前的实例instance
                        //adapter.setHandler(handler);
                        mPullRefreshListView.getAdapterView().setAdapter(adapter);
                    }
                    ArrayList<ProductBean> list = searchResultBean.getProducts();    //  得到集合数据
                     //page为1 的时候 清理集合 ,否则不清理集合 调用下面的方法
                    adapter.addData(list, page == 1 ? true : false);
                    adapter.notifyDataSetChanged();
                    if (searchResultBean.isHasNext()) { //判断有没个一下
                        currentPage = currentPage + 1;
                    } else {
                        listview.setPullToRefreshEnabled(false);   // 没了禁用
                        //ToastUtil.toast(self, "没有更多数据");
                    }
                }
                listview.onRefreshComplete();  //完成
                setSearchCount();  //设置页面的数量
            }
        });
    }

附录: 方法
adapter 里面的两个方法

private ArrayList<ProgramBean> data;
        public void addData(List<ProgramBean> list, boolean clear) {    //传true清理集合
            if (clear) {
                clear();
            }
            if (null == data) {
                data = new ArrayList<ProgramBean>();
            }
            if (null != list && list.size() > 0) {
                this.data.addAll(list);
            }
        }
         /**
         * 清理集合
         */
        private void clear() {
            if (null != data) {
                data.clear();
            }
        }
时间: 2024-10-27 19:38:04

PullToRefresh------ListView的使用的相关文章

ViewPage嵌套ListView,嵌套Gallery 滑动冲突

首先项目需求是, 1.有左滑出现点击登录界面,用sliderMenu框架实现 2.新闻内容用ViewPage实现 3.在ViewPage中加载新闻片段Fragment 4.Fragment布局是一个带有上拉刷新,下拉下载的PullToRefresh ListView 5.ListView 里面有一个特殊第一项 拉取新闻广告位,用Gallery控件实现 问题:这么多滑动控件,在自定义Gallery控件,左右滑动,并未调用Gallery的OnFling()方法? 问题一:当Gallery第一个图,左

360手机助手(二):侧拉栏drawerLayout+Tab+Viewpager+ListView+Pulltorefresh+imageloder

整个项目的框架在ContentPager,要熟悉这个类. 简介 完成侧拉栏的显示,侧拉首页对应的:首页+应用+游戏这3个 tab,包含的知识点有:请求数据 +pullTofresh + ImageLoader +轮播图 + listView 效果图: 侧拉栏的实现 V4包中的DrawerLayout实现侧拉效果,每个侧拉的item对应一个fragment,点击该item时,先把所有的fragment隐藏 + 文字设置未选中,然后才创建对应的fragment并显示 怎么实现侧拉栏的显示与隐藏? 点

android ListView上拉加载更多 下拉刷新功能实现(采用pull-to-refresh)

Android实现上拉加载更多功能以及下拉刷新功能, 采用了目前比较火的PullToRefresh,他是目前实现比较好的下拉刷新的类库. 目前他支持的控件有:ListView, ExpandableListView,GridView,WebView等. 下载地址:https://github.com/chrisbanes/Android-PullToRefresh 首先第一步当然是导入libriay到咱们的项目了,具体导入方式,这里不再赘述. 下面是个例子采用的是ListView,当然其余的和这

Android PullToRefresh 下拉刷新,上拉很多其它,支持ScrollView,ListView,可方便拓展GridView,WebView等

在写着东西之前.从网上找到非常多这方面的源代码,可是基本没有找到惬意的.包含在GitHub上的比較有名的Android-PullToRefresh-master.思来想去还是自己写吧.当然当中借鉴了一些别的开源代码! 废话不多说,直接上代码.凝视非常全乎,应该不难理解,Demo下载地址在最后: package com.zs.pulltorefreshtest; import android.content.Context; import android.util.AttributeSet; im

Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 标签: Android下拉刷新pullToRefreshListViewGridView 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-r

Android PullToRefresh 下拉刷新,上拉更多,支持ScrollView,ListView,可方便拓展GridView,WebView等

在写着东西之前,从网上找到很多这方面的源码,但是基本没有找到满意的,包括在GitHub上的比较有名的Android-PullToRefresh-master,思来想去还是自己写吧,当然其中借鉴了一些别的开源代码! 废话不多说,直接上代码,注释很全乎,应该不难理解,Demo下载地址在最后: package com.zs.pulltorefreshtest; import android.content.Context; import android.util.AttributeSet; impor

Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用详解

 群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-refresh ,有兴趣的看下,例子中的功能极其强大,支持很多控件.本篇博客详细给大家介绍下ListView和GridView利用pull-to-rerfesh 实现下拉刷新和上拉加载更多.对布局不清楚的可以看Android研究自定义ViewGroup实现FlowLayout 详解. 1.ListView下拉刷新快速入门 pull-to-refresh对ListView进行了封装,叫做:PullToRefreshList

Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 (转载)

最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/details/38238749 群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-refresh ,有兴趣的看下,例子中的功能极其强大,支持很多控件.本篇博客详细给大家介绍下ListView和GridView利用pull-to-rerfesh 实现下拉刷新和上拉加载更多. 1.List

ListView上拉加载,下拉刷新 PullToRefresh的使用

PullToRefresh是一套实现非常好的下拉刷新库,它支持:ListViewExpandableListViewGridViewWebViewScrollViewHorizontalScrollViewViewPager等多种常用的需要刷新的View类型,而且使用起来也十分方便.(下载地址:https://github.com/chrisbanes/Android-PullToRefresh) 使用PullToRefresh,需要导入第三方library 导入方法可以参考我的另一边文章——<

Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向

很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性.查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷新和上拉加载更多.这个组件有个mode的属性,可以设置为both,即上下同时都可拉动.但是只设置这个属性的话,上拉与下拉产生的效果是完全一致的.所以要使用这个开源项目做到下拉刷新并同时可上拉加载更多,就需要在代码中进行一些处理. ==========================pulltoref