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币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0