Android- SmartRefreshLayout

1. SmartRefreshLayout控件使用来向下拉动刷新页面,在使用SmartRefreshLayout前要在build.gradle 中添加依赖:

或者直接下载源代码导入类库'refresh-layout','refresh-header','refresh-footer'

 

//1.1.0 API改动过大,老用户升级需谨慎

compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'

compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-14'//没有使用特殊Header,可以不加这行

compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必须)

 

//1.0.5 当1.1.0出现问题可以回退到1.0.5.1

compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'

compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'//没有使用特殊Header,可以不加这行

compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必须)

compile 'com.android.support:design:25.3.1'//版本随意(非必须,引用可以解决无法预览问题)

Application中全局设置Header Footer

public class App extends Application {

    //static 代码段可以防止内存泄露

    static {

        //设置全局的Header构建器

        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {

                @Override

                public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {

                    layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色

                    return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header

                }

            });

        //设置全局的Footer构建器

        SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {

                @Override

                public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {

                    //指定为经典Footer,默认是 BallPulseFooter

                    return new ClassicsFooter(context).setDrawableSize(20);

                }

            });

    }

}

在XML布局文件中添加 SmartRefreshLayout

        android:id="@+id/refreshLayout"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        app:srlEnableFooterFollowWhenLoadFinished="true"

        app:srlEnableScrollContentWhenLoaded="true"

        android:layout_below="@+id/toolbar"

        >

       

            android:id="@+id/recyclerview"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:background="@color/white"

            >

    

 

java代码中的使用

SmartRefreshLayout refreshLayout = view.findViewById(R.id.refreshLayout);

       //刷新的监听事件

        refreshLayout.setOnRefreshListener(new OnRefreshListener() {

            @Override

            public void onRefresh(@NonNull RefreshLayout refreshLayout) {

                //请求数据

                refreshLayout.finishRefresh();  //刷新完成

            }

        });

        //加载的监听事件

        refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {

            @Override

            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {

                  refreshLayout.finishLoadMore();      //加载完成

                  refreshLayout.finishLoadMoreWithNoMoreData();  //全部加载完成,没有数据了调用此方法

            }

        });

常用的用法

refreshLayout.autoRefresh(); //自动刷新
refreshLayout.autoLoadMore(); //自动加载更多
刷新完成和加载完成分为如下几种情况
refreshLayout.finishRefresh(); //刷新完成
refreshLayout.finishRefresh(int delayed); //刷新完成, 参数delayed 设置延时
refreshLayout.finishLoadMore(); //加载完成
refreshLayout.finishLoadMore(int delayed); //加载完成, 参数delayed 设置延时
这两个方法是在加载失败时调用的
refreshLayout.finishRefresh(false);//结束刷新(刷新失败)
refreshLayout.finishLoadMore(false); //结束加载(加载失败)

refreshLayout.finishLoadMoreWithNoMoreData(); //全部加载完成,没有数据了调用此方法
隐藏刷新加载的方法
refreshLayout.setEnableLoadMore(false); //隐藏加载,不使用底部加载
refreshLayout.setEnableRefresh(false); //不使用刷新,隐藏刷新

refreshLayout.setNoMoreData(false);//恢复没有更多数据的原始状态,版本 1.0.5

你可能感兴趣的:(Android- SmartRefreshLayout)