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

  <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();
//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();
}
}

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

  1. PullToRefresh下拉刷新 加载更多 详解 +示例

    常用设置 项目地址:https://github.com/chrisbanes/Android-PullToRefresh a. 设置刷新模式 如果Mode设置成Mode.PULL_FROM_STAR ...

  2. 关于antd-mobile中列表上拉加载PullToRefresh的使用

    相信有很多小伙伴发现antd-mobile中的下拉刷新组件,也发现例子挺难的,其实这个组件并没有那么复杂,只是demo例子不好理解,给大家提供一个简单的demo,或许可以帮到你 上拉刷新下拉加载 - ...

  3. 【花般绽放】balibali

    先放项目地址:https://github.com/1067011734/balibali 感谢无私的程序员们分享 我们边看效果边看代码 项目运行出来的效果 先看Home页面 轮播 //src\pag ...

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

    Android下拉刷新pullToRefreshListViewGridView 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/3 ...

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

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

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

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git ...

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

    最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...

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

    Android实现上拉加载更多功能以及下拉刷新功能, 采用了目前比较火的PullToRefresh,他是目前实现比较好的下拉刷新的类库. 目前他支持的控件有:ListView, ExpandableL ...

  9. Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释

     群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-refresh ,有兴趣的看下,样例中的功能极其强大,支持非常多控件.本篇博客具体给大家介绍下ListView和GridVi ...

  10. PullToRefresh使用详解(一)--构建下拉刷新的listView

    前言:前几天写了篇关于PullToRefresh控件的DEMO导入的博客,但由于当时没有用到,所以就没细往下讲,现在开始到了实战阶段,用到了PullToRefresh的listView样式,网上有讲的 ...

随机推荐

  1. 2018年长沙理工大学第十三届程序设计竞赛 E 小木乃伊到我家 【最短路】

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 AA的欧尼酱qwb是个考古学家,有一天qwb发 ...

  2. ssh允许root用户登陆

    新的系统无root用户密码,设置root用户密码,修改也是这么修改 sudo passwd root 连续输入两次新密码. 允许root用户登陆: /etc/ssh/sshd_config 找到 Pe ...

  3. 【Flask】Column常用参数

    ### Column常用参数:1. primary_key:设置某个字段为主键.2. autoincrement:设置这个字段为自动增长的.3. default:设置某个字段的默认值.在发表时间这些字 ...

  4. jquery 初篇

    一.什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象. jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用  ...

  5. 也谈设计模式Facade

    门面模式提供一个高层次的接口,使得子系统更容易使用. 子系统与外部系统的通信必须经过一个统一的facade进行处理. 内部系统的交互在facade中进行整合,这样,对于外部系统的使用者就不用关注内部系 ...

  6. STL 之map解决 Message Flood(原字典树问题)

                                                                                      Message Flood Time ...

  7. 初识JQuery(1)-选择器

    初识jquery 在学习jquery之前,就有看过一些相关的视频,才知道它是可以写很少的代码就可以完成很多事的.记得第一写轮播图的时候,首先就百度了篇轮播图的实现,当时还不知道自己百度的其实不是原生的 ...

  8. Unity3D之Mesh(五)绘制圆

    前言: Unity3D中Mesh的基本单位是三角形,而圆形就是由许许多多的三角形组成的.那么我们就知道了绘制圆形的Mesh需要两个变量:圆的半径  以及分割数: 一.实现过程 基本过程与之前的类似,最 ...

  9. mysql多位小数字段用decimal类型

    转自http://database.51cto.com/art/201005/201651.htm

  10. php各种验证类

    <?php /**  * 验证类  *  */ class VerifyAction{     /**      * 是否为空值      */       public static func ...