Android RecyclerView实现下拉刷新和上拉加载
RecyclerView已经出来很久了,许许多多的项目都开始从ListView转战RecyclerView,那么,上拉加载和下拉刷新是一件很有必要的事情。 在ListView上,我们可以通过自己添加addHeadView和addFootView去添加头布局和底部局实现自定义的上拉和下拉,或者使用一些第三方库来简单的集成,例如Android-pulltorefresh或者android-Ultra-Pull-to-Refresh,后者的自定义更强,但需要自己实现上拉加载。 而在下面我们将用两种方式来实现上拉加载和下拉刷新 第一种方式:SwipeRefreshLayout+滑动底部自动加载 第二种 outManagerType.GRID_LAYOUT; } else if (layoutManager instanceof StaggeredGridLayoutManager) {mLayoutManagerType = LayoutManagerType.STAGGERED_GRID_LAYOUT; } } switch (mLayoutManagerType) { case LINEAR_LAYOUT: //线性布局处理逻辑 break; case GRID_LAYOUT: //网格布局处理逻辑 break; case STAGGERED_GRID_LAYOUT: //瀑布流布局处理逻辑 break; } //获取最后一个可见项的position int lastVisibleItemPosition = 0; if (layoutManager instanceof LinearLayoutManager) {lastVisibleItemPosition = ((LinearLayoutManager) layoutManager).findLastVisibleItemPosition(); } else if (layoutManager instanceof GridLayoutManager) {lastVisibleItemPosition = ((GridLayoutManager) layoutManager).findLastVisibleItemPosition(); } else if (layoutManager instanceof StaggeredGridLayoutManager) {StaggeredGridLayoutManager staggeredGridLayoutManager = (StaggeredGridLayoutManager) layoutManager; //获取所有列中最高的那个位置 int[] lastVisiblePositions = staggeredGridLayoutManager.findLastVisibleItemPositions(null); lastVisibleItemPosition = Arrays.stream(lastVisiblePositions).max().getAsInt(); } //判断是否滑动到底部 boolean isBottom = lastVisibleItemPosition == getItemCount() - 1; //判断是否向上滑动 boolean isUpScroll = dy < 0; //判断是否正在加载数据 boolean isLoading = isLoadMore || isRefreshing; //判断是否滑动停止 int newState = newState; //如果是SCROLL_STATE_IDLE,表示滑动停止 if (newState == RecyclerView.SCROLL_STATE_IDLE) {if (isUpScroll && isBottom && !isLoading) { //加载更多 loadMoreData(); isLoadMore = true; } } } @Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {isScrolling = newState != RecyclerView.SCROLL_STATE_IDLE; //下拉刷新 if (isRefreshing) {return;} if (newState == RecyclerView.SCROLL_STATE_DRAGGING) { //开始拖动时,隐藏刷新进度条 swipeRefreshLayout.setRefreshing(false); } else if (newState == RecyclerView
剩余14页未读,继续阅读
- 粉丝: 6
- 资源: 930
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 内网渗透、工具开发、二进制等相关笔记.zip
- 内网渗透、域渗透.zip
- 打电话,玩手机识别-支持YOLOv8格式的标记,超高识别率可检测到手持打电话, 非接触式打电话,玩手机自拍等.zip
- JAVA的Springboot个人健康监控管理系统源码数据库 MySQL源码类型 WebForm
- 新增 Microsoft Word 文件
- uniapp酒店微信小程序.zip,期末大作业
- 个人博客,关于渗透测试和审计,请访问 leeyabug.top.zip
- 一键在原版Kali的Docker镜像中安装MSF等渗透测试工具.zip
- 一款辅助安全研发在日常工作中渗透测试、安全研究、安全开发等工作的工具! 程序支持Yaml格式的http请求模版.zip
- 广州数控928te说明书
评论0