android使用SwipeRefreshLayout实现ListView下拉刷新上拉加载
作者:ZhengJiaoCsdn 发布时间:2022-07-15 08:39:50
本文实例为大家分享了android实现ListView下拉刷新上拉加载的具体代码,供大家参考,具体内容如下
这次使用的是系统的SwipeRefreshLayout实现下拉刷新,和设置ListView的滑动监听判断是否滑动到最底部然后加载更多;
这个要比PullToRefreshListView简单很多,想PullToRefreshListView实现下拉刷新上拉加载的可以看这篇博客:
android使用PullToRefresh框架实现ListView下拉刷新上拉加载更多
至于使用哪一种大家可以根据产品的需求选择,这两种刷新目前为止世面上还是使用PullToRefreshListView的比较多;
首先说下SwipeRefreshLayout的五个方法:
1、setOnRefreshListener():设置手势滑动 * 。
2、setProgressBackgroundColor():设置进度圈的背景色。
3、setColorSchemeResources():设置进度动画的颜色。
4、setRefreshing():设置组件的刷洗状态。
5、setSize():设置进度圈的大小
这个大家简单了解一下,下面代码中都一一用到;
首先说下布局文件,如果想用SwipeRefreshLayout实现下拉刷新必须把ListView写到SwipeRefreshLayout布局里面;
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/srfl">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listview" />
</android.support.v4.widget.SwipeRefreshLayout>
我这边是自己写的小Demo所以下拉的时候直接发送一个延时1秒的handler,然后添加数据刷新adapter;
上拉加载更多的时候直接给ListVIew设置了一个滑动监听,判断是否滑动到adapter的最下面,然后加载数据,刷新adapter;
public class MainActivity extends Activity {
private ListView mListView;
private SwipeRefreshLayout swipeRefreshLayout;
private List<String> stringList=new ArrayList<>();
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int x=0 ; x<16;x++){
stringList.add("新浪微博:搏击爱好者Z"+"---"+x);
}
initView();
}
private void initView() {
swipeRefreshLayout= (SwipeRefreshLayout) findViewById(R.id.srfl);
//设置进度圈的大小;(这里面只有两个值SwipeRefreshLayout.LARGE和DEFAULT,后者是默认效果)
swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);
//设置进度圈的背景色。这里随便给他设置了一个颜色:浅绿色
swipeRefreshLayout.setProgressBackgroundColorSchemeColor(Color.CYAN);
//设置进度动画的颜色。这里面最多可以指定四个颜色,我这也是随机设置的,大家知道怎么用就可以了
swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_orange_dark
,android.R.color.holo_blue_dark
,android.R.color.holo_red_dark
,android.R.color.widget_edittext_dark);
mListView= (ListView) findViewById(R.id.listview);
adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, stringList);
mListView.setAdapter(adapter);
//设置手势滑动 *
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
public void onRefresh() {
//发送一个延时1秒的handler信息
handler.sendEmptyMessageDelayed(199,1000);
}
});
//给listview设置一个滑动的监听
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
//当滑动状态发生改变的时候执行
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState){
//当不滚动的时候
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
//判断是否是最底部
if(view.getLastVisiblePosition()==(view.getCount())-1){
for(int x=0;x<5;x++){
stringList.add(stringList.size(),"魔兽世界"+x);
}
adapter.notifyDataSetChanged();
}
break;
}
}
//正在滑动的时候执行
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
}
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what==199){
stringList.add(0,"英雄联盟");
adapter.notifyDataSetChanged();
//设置组件的刷洗状态;false代表关闭
swipeRefreshLayout.setRefreshing(false);
}
}
};
}
这里面为了给大家演示SwipeRefreshLayout的几个方法,如果全部使用默认可以把setProgressBackgroundColor():setColorSchemeResources():setSize():这三个方法去掉。
这样代码会更少,默认效果也非常不错,这个看大家需求。
源码下载地址
来源:http://blog.csdn.net/zheng_jiao/article/details/51464981


猜你喜欢
- 1、不必要的自动装箱。自动装箱是将基础数据类型转换为相应的复杂类型,在HashMap的追加删除调查中充满了自动装箱问题,因此尽量避免Hash
- 背景出现了一次生产事故,事情是这样的,我们有一个项目,Java访问数据库的框架使用的是MyBatis。然后一个业务员在系统中查询了一个订单,
- java中的interface接口实例详解接口:Java接口是一些方法表征的集合,但是却不会在接口里实现具体的方法。java接口
- 本人没有接触android开发,由于想学习一下,所以自学,接下来是我学习路线,希望我走过的路能给你提供帮助。 下载首先我们需要下载 Andr
- 本文探讨使用C# StringBuilder 的最佳实践,用于减少内存分配,提高字符串操作的性能。在 .NET 中,String 对象是不可
- 本文实例为大家分享了java实现自动登录的具体代码,供大家参考,具体内容如下当你勾选(记住登录状态),用cookie保存用户名和密码。不勾选
- 使用开源框架是,可以直接复制源代码到自己的项目(本人在Android Studio中操作报R程序包不存在),也可以使用jar包,下面记录一下
- 前言最近公司有了新的业务,把现有Flutter Android项目应用到TV上去,这不,Asscre的活就来了。本文详细说明Flutter
- 对网页中各种不同格式的发布时间进行抽取,将发布时间以规整的“yyyy-MM-dd HH:mm:ss”格式表示出来,只能尽量追求精确,但是因为
- 在字符集中,有一类字符具有这样的特性:当从键盘上输入这个字符时,显示器上就可以显示这个字符,即输入什么就显示什么。这类字符称为可显示字符,如
- 大家对于 Spring 的 scope 应该都不会默认。所谓 scope,字面理解就是“作用域”、“范围”,如果一个 bean 的 scop
- NDK部分1、下载ndk这里就一笔带过了。2、解压ndk不要解压,文件权限会出错。执行之,会自动解压,然后mv到想放的地方。我放到了”/us
- 微服务编排框架起始原因 是 我们公司 分布式事务 使用的是 seate 分布式事务框架,现在只在一些小部分使用,因为考虑到seate 对性能
- 一、需求C# 项目生成 dll,在反编译工具下,好比皇帝的新装,dll 内部的代码看的一清二楚,在这里推荐一个工具ConfuserEx,可以
- 大家真正在工作中开发 java 应用都会使用eclipse,myeclipse, IntelliJ等等不过依然值得花10分钟学习如何使用最原
- SpringMVC4使用数据校验的时候需要使用hibernate-validator的包第一步添加依赖 <d
- 初学线程时,总是将 run 方法和 start 方法搞混,虽然二者是完全不同的两个方法,但刚开始使用时很难分清,原因就是因为初次使用时效果貌
- 前言上一篇我们介绍了 Animation 和 AnimationController 的使用,这是最
- 本文主要为大家讲解多种Android调试工具的用法。 1. 查看当前
- 将下列字符串,依照|拆分成数组:String numbers = "1|2|3|4|5";使用split拆分String