項目中的需求,RecyclerView橫向滑動列表,要有加載更多的功能,給RecyclerView設置一個滑動監聽,在onScrolled方法中判斷一下滑動方向,然后在onScrollStateChanged方法中判斷一下是否滑動到最后一個item即可,代碼中已經寫了詳細的注釋。
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { //用來標記是否正在向最后一個滑動 boolean isSlidingToLast = false; @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager(); // 當不滾動時 if (newState == RecyclerView.SCROLL_STATE_IDLE) { //獲取最后一個完全顯示的ItemPosition int lastVisibleItem = manager.findLastCompletelyVisibleItemPosition(); int totalItemCount = manager.getItemCount(); // 判斷是否滾動到底部,並且是向右滾動 if (lastVisibleItem == (totalItemCount - 1) && isSlidingToLast) { //加載更多功能的代碼 } } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); //dx用來判斷橫向滑動方向,dy用來判斷縱向滑動方向 if (dx > 0) { //大於0表示正在向右滾動 isSlidingToLast = true; } else { //小於等於0表示停止或向左滾動 isSlidingToLast = false; } } });