上拉更新,下拉刷新

Posted wang-jingyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上拉更新,下拉刷新相关的知识,希望对你有一定的参考价值。

第三方控件 :https://github.com/scwang90/SmartRefreshLayout

首先添加依赖

implementation ‘com.scwang.smartrefresh:SmartRefreshLayout:1.1.0‘

//布局
<com.scwang.smartrefresh.layout.SmartRefreshLayout
        android:layout_below ="@id/include"
        android:id="@+id/srl_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:srlEnableAutoLoadMore="false">
//下拉刷新
        <com.scwang.smartrefresh.layout.header.ClassicsHeader
            app:srlTextRelease="@string/Refresh"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <androidx.recyclerview.widget.RecyclerView
            android:scrollbars="none"
            android:layout_below ="@id/include"
            android:id="@+id/recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fadeScrollbars="false"
            android:nestedScrollingEnabled="false"
            android:visibility="visible"/>
//上拉加载更多
        <com.scwang.smartrefresh.layout.footer.ClassicsFooter
            app:srlTextRelease="@string/Release"
            app:srlTextPulling="@string/up"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </com.scwang.smartrefresh.layout.SmartRefreshLayout>

  

使用框架
 /**
     * 这个是上拉刷新和加载框架
     */
    private RefreshLayout srl_layout;
//记录刷新时间
    Date delta = null;
//服务器获取数据的页码
    private int pageNum = 1;
 //判断是否是第一次进入
    private static boolean isFirstEnter = true;

//声明
 srl_layout = findViewById(R.id.srl_layout);

//需要时间的话写这个
 mClassicsHeader = (ClassicsHeader) srl_layout.getRefreshHeader();
//获取现在的时间
        Date nowDate = new Date(System.currentTimeMillis());
//如果是第一次进入那就记录现在的时间为下次刷新做准备
        if (isFirstEnter) {
            mClassicsHeader.setLastUpdateTime(nowDate);
            delta = nowDate;
            isFirstEnter = false;
//不是第一次就走这个
        } else {
如果第一次进入没有刷新那没就没有刷新时间那就用现在获取到的 否则就需要用现在获取到的时间和上次刷新的时间做减法算出上次是什么时间刷新的
            if (delta == null) {
                mClassicsHeader.setLastUpdateTime(nowDate);
                delta = nowDate;
            } else {
                Date daltaDate = new Date(System.currentTimeMillis() - delta.getTime());
                delta = daltaDate;
                mClassicsHeader.setLastUpdateTime(daltaDate);
            }
        }
        mClassicsHeader.setTimeFormat(new SimpleDateFormat("更新于 MM-dd HH:mm", Locale.CHINA));
        mClassicsHeader.setTimeFormat(new DynamicTimeFormat("最后更新: %s"));


//进入刷新
srl_layout.autoRefresh();

//监听事件
//下拉刷新
srl_layout.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(RefreshLayout refreshlayout) {
                myFeedback.clear();
                pageNum = 1;
                getData();
                mAdapter.notifyDataSetChanged();
                refreshlayout.finishRefresh(2000/*,false*/);//传入false表示刷新失败
            }
        });
//上拉加载更多
        srl_layout.setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore(RefreshLayout refreshlayout) {
                pageNum++;
                getData();
                mAdapter.notifyDataSetChanged();
                refreshlayout.finishLoadMore(2000/*,false*/);//传入false表示加载失败
            }
        });

  



以上是关于上拉更新,下拉刷新的主要内容,如果未能解决你的问题,请参考以下文章

基于iscroll实现下拉和上拉刷新

vux (scroller)上拉刷新下拉加载更多

iOS常用刷新控件(下拉、上拉)详解

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

Android——Xlistview上拉刷新下拉加载

iscroll.js上拉下拉刷新时无法回弹问题怎么解决办法