SwipeRefreshLayout是Android V4、V7包中的一个控件,是Google给我们提供的一个下拉刷新的布局控件,可以轻松完成下拉刷新。

  SwipeRefreshLayout的特点是其中只能有一个子控件,和ScrollView相似。

  我们今天已一个例子来看看SwipeRefreshLayout这个控件的功能:使用SwipeRefreshLayout布局结合ListView完成下拉刷新,向ListView中添加新数据的功能。

  首先来看一下一些关于配置的问题。SwipeRefreshLayout布局中可以设置刷新圆圈中展示的颜色,调用setColorSchemeColors()方法设置,最多可以设置4中颜色,具体的代码如下:

        // 设置刷新圆圈的颜色(最多只能有四种颜色)
srl.setColorSchemeColors(Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW);

  页面的布局代码如下:

<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/srh"
android:layout_width="match_parent"
android:layout_height="match_parent"> <ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent" /> </android.support.v4.widget.SwipeRefreshLayout>

  在JAVA代码中,通过SwipeRefreshLayout在XML文件中的ID找到这个布局控件:

srl = (SwipeRefreshLayout) findViewById(R.id.srh);

  ListView适配数据的代码在这里就不多说了,总之初始时候运行的结果如下图所示:

  接下来编写SwipeRefreshLayout进行下拉刷新的代码。SwipeRefreshLayout布局通过setOnRefreshListener()方法设置刷新事件,需要重写其中的onRefresh()抽象方法,在这个方法中写下拉刷新的业务代码,最后必须调用setRefreshing(false)。具体的代码如下:

        // 设置SwipeRefreshLayout的刷新事件
srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
mHandler.sendEmptyMessage(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
});
// 初始化Handler
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
// 在ListView中添加两条数据
data.add(0, "New Item......");
data.add(0, "New Item......");
adapter.setData(data);
adapter.notifyDataSetChanged();
// 取消SwipeRefreshLayout的刷新状态
srl.setRefreshing(false);
}
}
};

  在这段代码中,在刷新的时候故意停留5秒钟,然后向ListView中添加了2条新的数据,最后在Handler中调用了setRefreshing(false)方法结束了刷新。刷新过程中和刷新完毕后的状态如下图所示:

      

  以上就是对SwipeRefreshLayout布局控件的基础用法的介绍,下面贴出码云上的源码,供大家参考。

DEMO地址

最新文章

  1. python 脚本中使用了第三方openpyxl 打包程序运行提示ImportError:cannot import name __version__
  2. ubuntu下解析udt数据包
  3. super的作用(转自百度)
  4. Web Components是不是Web的未来
  5. CC2540开发板学习笔记(九)—— BLE协议简介
  6. php实现显示网站运行时间-秒转换年月日时分秒
  7. Netty4.x中文教程系列(五)编解码器Codec
  8. httpclient 302 重定向
  9. [C#]递归遍历文件夹
  10. Android常用网址[转]
  11. ListActivity ListView 使用 介绍 用法
  12. NFinal 控制器—URL
  13. WCF通信过程
  14. 利用SVNKit进行版本库的树的导出
  15. Linux下查看使用频率最高的十个命令
  16. NDK常用命令
  17. Python_tkinter(5)_GUI工具
  18. 第89节:Java中的反射技术
  19. Callcenter 模块解析
  20. Python “No module named” 以及在Python2中可以导入,但在python3中却出现的原因

热门文章

  1. jQuery慢慢啃之ajax(九)
  2. ffmpeg与RTMP流媒体连接用法(翻译) http://www.chinavideo.org/forum.php?mod=viewthread&amp;tid=15423
  3. div section article aside的理解
  4. ASP.NET中扩展FileUpload的上传文件的容量
  5. windows下面composer安装yii2
  6. js常用字符串函数
  7. Source kit service terminated Editor functionality temporarily limited
  8. Find your present (2) (位异或)
  9. RPC通信编程
  10. Python处理XML