【Android - V】之SwipeRefreshLayout的使用
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布局控件的基础用法的介绍,下面贴出码云上的源码,供大家参考。
【Android - V】之SwipeRefreshLayout的使用的更多相关文章
- 【Android】使用 SwipeRefreshLayout 实现下拉刷新
今天在codepath 上看到一个开源项目 [点击查看]使用到了 SwipeRefreshLayout 实现了下拉刷新,但演示样例并不完整,于是自己就动手写了下.之前看到郭霖的博客上也有介绍下拉刷新, ...
- Android:ScrollView和SwipeRefreshLayout高度测量
今天组里的同事要做一个奇葩的效果,要求在ScrollView里嵌套一个RefreshLayout.类似代码如下: <?xml version="1.0" encoding=& ...
- [Android实例] Android 6.0RecyclerView SwipeRefreshLayout 下拉刷新 上拉加载
这是Android 6.0的 SwipeRefreshLayout 实现下拉刷新和RecyclerView的上拉加载更多,以及添加分割线等 Android <ignore_js_op> r ...
- 【Android - V】之ViewPager的使用
ViewPager是Android V4包中的一个控件,常常用来作为首页的滚动广告,也常常结合Fragment来实现页面的切换效果. ViewPager和ListView有很多相似的地方,都是适配器控 ...
- 【Android - V】之DrawerLayout的使用
DrawerLayout是Android V4包中的一个布局控件,用来实现一个抽屉样式的布局. DrawerLayout通过设置子视图的layout_gravity来决定子视图停靠在屏幕的哪个边缘外侧 ...
- 【Android - V】之Toolbar的使用
Toolbar是Android V7包中的一个控件,用来代替Action Bar作为界面的头部标题栏布局.Toolbar相对于Action Bar的特点是更加灵活,可以显示在任何位置. 首先先来看To ...
- android SwipeRefreshLayout google官方下拉刷新控件
下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...
- Android下拉刷新-SwipeRefreshLayout,RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout)
SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果.该控件集成自ViewGroup在support-v4兼容包下,不过我们需要升级supportlibr ...
- Xamarin android SwipeRefreshLayout入门实例
android SwipeRefreshLayout 是实现的效果就是上滑下拉刷新ListView 获取其他控件数据.基本上每个App都有这种效果.Google提供了一个官方的刷新控件SwipeRef ...
随机推荐
- sublime text 3 安装中文
本经验目前在Ubuntu14.04环境下,已有搜狗输入法 for Linux和Sublime Text 3的情况下安装成功. END 解决方法步骤2 1 保存下面的代码到文件sublime_imf ...
- node初步一:HTTP请求
一. 创建pathtest.js文件 var http= require('http' ); var url= require('url' ); function start (){ function ...
- 控制器view加载
出自李明杰讲课视频
- gnuplot使用
直接用yum安装gnuplot即可,例如 sudo sh -c "yum install gnuplot.x86_64 " 安装以后就可以使用了 编写gnuplot脚本 # grp ...
- javascript学习代码--点击按钮显示内容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- synchronize的心得
记录一下synchronize(this).synchronize(A.class).private B b= new B(); synchronize(b) .synchronize static ...
- WordPress Shareaholic 插件跨站请求伪造漏洞
漏洞名称: WordPress Shareaholic 插件跨站请求伪造漏洞 CNNVD编号: CNNVD-201308-250 发布时间: 2013-08-19 更新时间: 2013-08-19 危 ...
- Linux Kernel 多个本地拒绝服务漏洞
漏洞名称: Linux Kernel 多个本地拒绝服务漏洞 CNNVD编号: CNNVD-201308-154 发布时间: 2013-08-12 更新时间: 2013-08-12 危害等级: 漏 ...
- PuTTY DSA签名远程缓冲区溢出漏洞(CVE-2013-4207)
漏洞版本: Simon Tatham PuTTY 0.52 - 0.63 漏洞描述: BUGTRAQ ID: 61649 CVE(CAN) ID: CVE-2013-4207 PuTTY是Window ...
- bzoj3208: 花神的秒题计划Ⅰ
3208: 花神的秒题计划Ⅰ Time Limit: 16 Sec Memory Limit: 128 MBSubmit: 323 Solved: 211[Submit][Status] Desc ...