android使用SwipeRefreshLayout实现ListView下拉刷新上拉加载

所属分类: 软件编程 / Android 阅读数: 34
收藏 0 赞 0 分享

本文实例为大家分享了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():这三个方法去掉。
这样代码会更少,默认效果也非常不错,这个看大家需求。

源码下载地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Android中加入名片扫描功能实例代码

这篇文章主要介绍了Android中加入名片扫描功能实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿微信发表说说实现拍照、多图上传功能

这篇文章主要为大家详细介绍了Android仿微信发表说说实现拍照、多图上传功能,使用Retrofit2.0技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

设置Android系统永不锁屏永不休眠的方法

在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠。本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧
收藏 0 赞 0 分享

Android Retrofit 2.0框架上传图片解决方案

这篇文章主要介绍了Android Retrofit 2.0框架上传一张与多张图片解决方案,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义等待对话框

这篇文章主要为大家详细介绍了Android自定义等待对话框的实现方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中Window添加View的底层原理

这篇文章主要介绍了Android中Window添加View的底层原理,需要的朋友可以参考下
收藏 0 赞 0 分享

Android调用系统默认浏览器访问的方法

这篇文章主要介绍了Android调用系统默认浏览器访问的方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发退出程序的方法汇总

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面脚本之家小编就给大家介绍android开发退出程序的几种方法,感兴趣的朋友参考下吧
收藏 0 赞 0 分享

Android程序开发中单选按钮(RadioGroup)的使用详解

在android程序开发中,无论是单选按钮还是多选按钮都非常的常见,接下来通过本文给大家介绍Android程序开发中单选按钮(RadioGroup)的使用,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

这篇文章主要介绍了Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多