|
下拉加载不多说了 一般可以用官方的SwipeRefreshLayout
原理
1:通过addOnScrollListener监听滚动事件
2:OnScrollListener中的onScrolled方法判断下拉还是下拉
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- super.onScrolled(recyclerView, dx, dy);
- //dx用来判断横向滑动方向,dy用来判断纵向滑动方向
- if(dy > 0){
- //大于0表示,正在向下滚动
- isSlidingToLast = true;
- }else{
- //小于等于0 表示停止或向上滚动
- isSlidingToLast = false;
- }
- }
复制代码
3:在方法中判断是否上拉到底部
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- StaggeredGridLayoutManager manager = (StaggeredGridLayoutManager) recyclerView.getLayoutManager();
- // 当不滚动时
- if (newState == RecyclerView.SCROLL_STATE_IDLE) {
- //获取最后一个完全显示的ItemPosition
- int[] lastVisiblePositions = manager.findLastVisibleItemPositions(new int[manager.getSpanCount()]);
- int lastVisiblePos = getMaxElem(lastVisiblePositions);
- int totalItemCount = manager.getItemCount();
- // 判断是否滚动到底部
- if (lastVisiblePos == (totalItemCount -1) && isSlidingToLast) {
- loading.setVisibility(View.VISIBLE);
- mRecyclerView.postDelayed(new Runnable() {
- @Override
- public void run() {
- page ++;
- loadDatas();
- }
- },2000);
- }
- }
- }
复制代码
|
|