上拉更新,下拉刷新
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表示加载失败 } });
以上是关于上拉更新,下拉刷新的主要内容,如果未能解决你的问题,请参考以下文章