PullToRefreshListView-->
Posted aWay01
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PullToRefreshListView-->相关的知识,希望对你有一定的参考价值。
PullToRefresh是一套实现非常好的下拉刷新库,它支持:
1.ListView
2.ExpandableListView
3.GridView
4.WebView
等多种常用的需要刷新的View类型,而且使用起来也十分方便。
(下载地址:https://github.com/chrisbanes/android-PullToRefresh)
//使用前步骤---------------------------------------------------------------------->
as中file-》new-》import module,导入下载包种的library目录,会自动转成as的library模块,并生成gradle文件,记得修改gradle中编译sdk版本和编译工具的版本:
需要将第三方库中build.gradle下编译器版本改成和工程项目的一致
如,项目的编译器版本为
compileSdkVersion 23 buildToolsVersion "23.0.2"
如果默认配置为如下版本,不修改则会出现异常。
compileSdkVersion 17 buildToolsVersion "21.1.2"
如果编译的sdk为23,会出现语法错误,把不再支持的FloatMath改成Math即可,因为前者已经过时
导入完毕后,在工程项目中添加对此library的依赖即可.
//PullToRefreshListView的使用---------------------------核心代码--------------------------------------------
ptr是pullToRefresh的配置属性 使用是需要添加 xmlns:ptr="http://schemas.android.com/apk/res-auto"
ptr:ptrDrawable=“” 上拉下拉图标
ptr:ptrAnimationStyle="" 图标动画 取值: flip:翻转 rotate旋转
ptr:ptrHeaderBackground="" 上拉下拉时 头部的背景色
ptr:ptrHeaderTextColor="" 上拉下拉时 文字颜色
//设置可以上拉也可以下拉
lvJokeItems.setMode(PullToRefreshBase.Mode.BOTH);
ILoadingLayout layoutHead = lvJokeItems.getLoadingLayoutProxy(true, false);
layoutHead.setRefreshingLabel("下拉刷新");
layoutHead.setRefreshingLabel("正在载入......");
layoutHead.setReleaseLabel("放开刷新");
ILoadingLayout layoutFoot = lvJokeItems.getLoadingLayoutProxy(false,true);
layoutHead.setRefreshingLabel("上拉加载更多");
layoutHead.setRefreshingLabel("正在加载......");
layoutHead.setReleaseLabel("放开加载");
}
lvJokeItems.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//要用异步分五执行,同步执行有问题
new MyRefreshTask().execute();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
new MyLoadTask().execute();
}
});
}
class MyRefreshTask extends AsyncTask<Void,Void,Void>{
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
adapter.notifyDataSetChanged();
//一定要标示已经刷新完毕
lvJokeItems.onRefreshComplete();
}
@Override
protected Void doInBackground(Void... params) {
listJokes.add(0,"head");
return null;
}
}
class MyLoadTask extends AsyncTask<Void,Void,Void>{
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
adapter.notifyDataSetChanged();
lvJokeItems.onRefreshComplete();
}
@Override
protected Void doInBackground(Void... params) {
addDatas();
return null;
}
}
protected void addDatas(){
int iCnt = listJokes.size();
for (int i = 0; i < 50; i++) {
listJokes.add(iCnt+i+"");
}
}
以上是关于PullToRefreshListView-->的主要内容,如果未能解决你的问题,请参考以下文章
PullToRefreshListView中嵌套ViewPager滑动冲突的解决
PullToRefreshListView已弃用,将在未来的主要版本中删除
关于使用pulltorefreshlistview刷新的问题