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

ListView
ExpandableListView
GridView
WebView
ScrollView
HorizontalScrollView
ViewPager
等多种常用的需要刷新的View类型,而且使用起来也十分方便。
(GitHub地址:https://github.com/chrisbanes/Android-PullToRefresh)

  • PullToRefresh基本用法:
    1、在布局文件中添加PullToRefresh控件,比如PullToRefreshListView;
    2、在Activity中,设置监听器OnRefreshListener以响应用户下拉操作;
    3、在监听器的onRefresh()方法中执行数据刷新操作,可以通过AsyncTask或Handler来实现;
    4、获取到数据后,记得调用onRefreshComplete()方法通知PullToRefresh控件数据已获取完毕,可以结束刷新操作。

二.使用PullToRefresh插件的简单示例

这里演示使用的是PullToRefreshScrollView。下拉时在最上面添加数据,上拉时在最下面添加数据。

(一)导入文件

1.下载PullToRefresh开发库

2.导入PullToRefresh开发库

下载后,解压到某个位置,Studio导入要求路径中不能有中文!
这里以AndroidStudio演示导入示例:
File–>New—>Import Module–>选择你解压后的开发包文件,如图:

选择路径后点击确定。
在Android项目中显示为:

3.依赖开发包

在项目的build.gradle中添加依赖
//加载工程项目包:下拉刷新上拉加载!
compile project(‘:pulltorefresh’)
也可以使用操作依赖

下面一个案例:

MainActivity主方法:

public class MainActivity extends AppCompatActivity {    PullToRefreshScrollView ptrsl;    ScrollListView slv;    List list = new ArrayList<>();//ListView中的数据集合    ArrayAdapter adapter;//ListView的适配器    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ptrsl = (PullToRefreshScrollView) findViewById(R.id.ptrsl);        slv = (ScrollListView) findViewById(R.id.slv);        for (int i = 0; i < 2; i++) {            list.add("" + i);        }        //适配器的视图使用Android系统自带的TextView布局        adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, android.R.id.text1, list);        //给ListVIew设置适配器        slv.setAdapter(adapter);        //给上拉加载下拉刷新控件设置监听对象        ptrsl.setOnRefreshListener(refresh);        //设置可以上拉和下拉,否则默认支持的是下拉        ptrsl.setMode(PullToRefreshBase.Mode.BOTH);    }    /**     * 刷新的监听对象     */    PullToRefreshBase.OnRefreshListener2 refresh = new PullToRefreshBase.OnRefreshListener2() {        //在顶部时,。。。下拉刷新        @Override        public void onPullDownToRefresh(PullToRefreshBase refreshView) {            ptrsl.setRefreshing();            ptrsl.smoothScrollTo(-100);//设置拉出多长的距离才显示刷新效果            new Thread(new Runnable() {                @Override                public void run() {                    try {                        Thread.sleep(3000);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                    handler.sendEmptyMessage(1);//发送Handler的what为1,代表下拉                }            }).start();        }        //在底部时,。。。上拉刷新        @Override        public void onPullUpToRefresh(PullToRefreshBase refreshView) {            ptrsl.setRefreshing();            ptrsl.smoothScrollTo(-100);            new Thread(new Runnable() {                @Override                public void run() {                    try {                        Thread.sleep(3000);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                    handler.sendEmptyMessage(2);//发送Handler的what为2,代表上拉                }            }).start();        }    };    //创建Hadler,数据数据并处理    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if (msg.what == 1) {                list.add(0, "下拉刷新!");//把数据放在最前面            } else if (msg.what == 2) {                list.add("上拉刷新!");//把数据放在最后面            }            adapter.notifyDataSetChanged();            ptrsl.onRefreshComplete();        }    };}

xml布局

<?xml version="1.0" encoding="utf-8"?><com.handmark.pulltorefresh.library.PullToRefreshScrollView    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:id="@+id/ptrsl"    tools:context="com.example.administrator.testdemo.MainActivity">    <com.example.administrator.testdemo.ScrollListView        android:id="@+id/slv"        android:layout_width="match_parent"        android:layout_height="match_parent" />com.handmark.pulltorefresh.library.PullToRefreshScrollView>

自定义的ScrollListView

public class ScrollListView extends ListView {    public ScrollListView(Context context) {        super(context);    }    public ScrollListView(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int height = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);        super.onMeasure(widthMeasureSpec, height);    }}

总体来说用起来还是很容易的 程序中下拉时,上面显示的界面的提示也是可以自定义的。对下载的库文件里面的src中的layout的文件pull_to_refresh_header_vertical.xml文件进行修改就可以了。

更多相关文章

  1. Android使用LocalSocket抓取数据
  2. Android(安卓)使用 AIDL 实现进程间通信,使用基本类型作为输入和
  3. android 简单文件管理器的实现
  4. android使用文件进行存储
  5. android 反编译工具
  6. Android(安卓)布局之GridLayout
  7. Day03
  8. android 上面js java数据互传
  9. android之switch控件的用法

随机推荐

  1. Android(安卓)长按识别图中二维码
  2. “android studio 运行程序提示Applicati
  3. android中textview设置为多行文本时,如何
  4. Android(安卓)Initialization Process --
  5. Android(安卓)Wear Preview- 创建通知(Cre
  6. 2013.12.03 ——— android onPrepareOpt
  7. android 正则表达式
  8. Android中的BinderProxy.finalize()或Pla
  9. android 开源项目推荐
  10. android 悬浮窗口