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();
//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的使用的更多相关文章
- PullToRefresh下拉刷新 加载更多 详解 +示例
常用设置 项目地址:https://github.com/chrisbanes/Android-PullToRefresh a. 设置刷新模式 如果Mode设置成Mode.PULL_FROM_STAR ...
- 关于antd-mobile中列表上拉加载PullToRefresh的使用
相信有很多小伙伴发现antd-mobile中的下拉刷新组件,也发现例子挺难的,其实这个组件并没有那么复杂,只是demo例子不好理解,给大家提供一个简单的demo,或许可以帮到你 上拉刷新下拉加载 - ...
- 【花般绽放】balibali
先放项目地址:https://github.com/1067011734/balibali 感谢无私的程序员们分享 我们边看效果边看代码 项目运行出来的效果 先看Home页面 轮播 //src\pag ...
- 【转载】 Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
Android下拉刷新pullToRefreshListViewGridView 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/3 ...
- ListView上拉加载,下拉刷新 PullToRefresh的使用
PullToRefresh是一套实现非常好的下拉刷新库,它支持:ListViewExpandableListViewGridViewWebViewScrollViewHorizontalScrollV ...
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git ...
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 (转载)
最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...
- android ListView上拉加载更多 下拉刷新功能实现(采用pull-to-refresh)
Android实现上拉加载更多功能以及下拉刷新功能, 采用了目前比较火的PullToRefresh,他是目前实现比较好的下拉刷新的类库. 目前他支持的控件有:ListView, ExpandableL ...
- Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释
群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-refresh ,有兴趣的看下,样例中的功能极其强大,支持非常多控件.本篇博客具体给大家介绍下ListView和GridVi ...
- PullToRefresh使用详解(一)--构建下拉刷新的listView
前言:前几天写了篇关于PullToRefresh控件的DEMO导入的博客,但由于当时没有用到,所以就没细往下讲,现在开始到了实战阶段,用到了PullToRefresh的listView样式,网上有讲的 ...
随机推荐
- 每天一个Linux命令(31)diff命令
diff命令在最简单的情况下,比较给定的两个文件的不同.如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入.diff命令是以逐行的方式,比较文本文件的异同处.如果该命令指定进行目录的比较,则 ...
- mysql中的内连接,外连接实例详解
内连接: 只连接匹配的行左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边 ...
- JAVAScript中DOM与BOM的差异分析
JAVAScript 有三部分构成,ECMAScript,DOM和BOM,根据浏览器的不同,具体的表现形式也不尽相同.我们今天来谈一谈DOM和BOM这俩者之间的差异. 用百科上的来说: 1. DOM是 ...
- Javascript函数的参数arguments
arguments Description 在所有的函数中有一个arguments对象,arguments对象指向函数的参数,arguments object is an Array-like obj ...
- redis实现session共享,哨兵
一.Redis介绍 1.redis是key-value的存储系统,属于非关系型数据库 2.特点:支持数据持久化,可以让数据在内存中保存到磁盘里(memcached:数据存在内存里,如果服务重启,数据会 ...
- 前端框架之VUE
vue学习[第1篇]:vue之指令 vue学习[第2篇]:es6简单介绍 vue学习[第3篇]:vue之node.js的简单介绍 vue学习[第4篇]:vue 之webpack打包工具的使用 vue学 ...
- 分享知识-快乐自己:SpringBoot集成热部署配置(一)
摘要: 热部署与热加载: ava热部署与Java热加载的联系和区别: 1):Java热部署与热加载的联系: 1.不重启服务器编译/部署项目 2.基于Java的类加载器实现 2):Java热部署与热加载 ...
- Mysql5.5 InnoDB存储引擎配置和优化
环境为CentOS系统,1G内存,Mysql5.5.30.在/etc/my.cnf内添加: 复制代码代码如下: skip-external-lockingskip-name-resolvemax_co ...
- css中单位px和em,rem的区别
PX:PX实际上就是像素,用PX设置字体大小时,比较稳定和精确.但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,如果改变了浏览器的缩放,这时会使用我们的Web页面布局被打破.这样 ...
- 关于IDT报错乱码总结
可算是把我折腾坏了.一筹莫展.最后才把这些问题搞好.有些事不知道做以前,怎么都想不到.发现了方法之后,原来也不过这样.我觉得自己记性太差.还是好好写下来吧.写下来顺便会帮我重新再梳理一遍.原先乱码是因 ...