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=""     上拉下拉时 文字颜色

 

---------初始化PulltoRefreshListview----------
   protected void initListView(){
    //设置可以上拉也可以下拉
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("放开加载");
}
 ---------设置监听-------------------
   protected void setListener(){
    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刷新的问题

PullToRefreshListView-->

PullToRefreshListView 内嵌checkbox 数据丢失问题

PullToRefreshListView手动刷新问题