欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android SwipeRefreshLayout下拉刷新组件示例

程序员文章站 2023-12-16 17:12:34
swiperefreshlayout概述 swiperefrshlayout是google官方更新的一个widget,可以实现下拉刷新的效果。该控件集成自viewgrou...

swiperefreshlayout概述

swiperefrshlayout是google官方更新的一个widget,可以实现下拉刷新的效果。该控件集成自viewgroup在support-v4兼容包下,不过我们需要升级supportlibrary的版本到19.1以上。

用户通过手势或者点击某个按钮实现内容视图的刷新,布局里加入swiperefreshlayout嵌套一个子视图如listview、 recyclerview等,触发刷新会通过onrefreshlistener的onrefresh方法回调,我们在这里执行页面数据的刷新,每次手势 的完成都会执行一次通知,根据滑动距离判断是否需要回调。setrefreshing(false)通过代码直接取消刷新,true则手动设置刷新调出刷 新视图。setenabled(false)通过boolean控制是否禁用手势刷新 。

基本使用的方法如下:

1.setonrefreshlistener(onrefreshlistener):添加下拉刷新监听器

2.setrefreshing(boolean):显示或者隐藏刷新进度条

3.isrefreshing():检查是否处于刷新状态

使用非常简单,用一个简单案例来介绍swiperefreshlayout下拉刷新的功能。

布局文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.swiperefreshlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/v7_refresh"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@color/back">

  <android.support.v7.widget.recyclerview
    android:id="@+id/v7_recyclerview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</android.support.v4.widget.swiperefreshlayout>

item.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.cardview 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:id="@+id/cardview"
  app:cardcornerradius="5dp"
  app:cardbackgroundcolor="@android:color/white"
  android:layout_margin="5dp"
  android:layout_height="60dp"
  android:layout_width="match_parent">

    <textview
    android:id="@+id/menuitem_tv"
    android:layout_gravity="center"
    android:text="@string/app_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</android.support.v7.widget.cardview>

activity

public class mainactivity extends appcompatactivity {

  private swiperefreshlayout swiperefreshlayout;

  private recyclerview recyclerview;

  private list<string> list=null;
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.main_activity);
    initview();
  }
  private void initview()
  {
    swiperefreshlayout=(swiperefreshlayout)findviewbyid(r.id.v7_refresh);
    recyclerview=(recyclerview)findviewbyid(r.id.v7_recyclerview);
    //设置下拉圆圈的大小,两个值 large, default
    swiperefreshlayout.setsize(swiperefreshlayout.large);
    // 设定下拉圆圈的背景:默认white
    // swiperefreshlayout.setprogressbackgroundcolor(android.r.color.white);
    initdata();
  }
  private void initdata()
  {
    binddata();
    //设置刷新时动画的颜色,可以设置4个
    swiperefreshlayout.setcolorschemeresources(android.r.color.holo_blue_light, android.r.color.holo_red_light, android.r.color.holo_orange_light, android.r.color.holo_green_light);
    swiperefreshlayout.setonrefreshlistener(new swiperefreshlayout.onrefreshlistener() {

      @override
      public void onrefresh() {
        toast.maketext (mainactivity.this,"正在刷新",toast.length_long).show();
        // todo auto-generated method stub
        new handler().postdelayed(new runnable() {

          @override
          public void run() {
            // todo auto-generated method stub
            toast.maketext (mainactivity.this,"刷新完成",toast.length_long).show();
            swiperefreshlayout.setrefreshing(false);
          }
        }, 4000);
      }
    });

  }

  private void binddata(){
    list=new arraylist<>();
    for(int i=0;i<22;i++){
      list.add("item"+(i+1));
    }
    recyclerview.setlayoutmanager(new linearlayoutmanager(this));
    recyclerview.sethasfixedsize(true);
    recyclerview.setitemanimator(new defaultitemanimator());
    menuadapter menuadapter=new menuadapter(this,r.layout.item,list);
    recyclerview.setadapter(menuadapter);
    menuadapter.setonitemclicklistener(new commonrecycleradapter.onitemclicklistener() {
      @override
      public void onitemclick(recyclerview.viewholder viewholder, view view, int position) {

        toast.maketext (mainactivity.this, list.get(position),toast.length_long).show();

      }
    });
  }
}

运行效果如图:

Android SwipeRefreshLayout下拉刷新组件示例

源码点击下载:swiperefreshlayout_jb51.rar

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

上一篇:

下一篇: