自定義RecycleView滑動監聽類


public class UpPullRecyclerViewOnScrollListener extends RecyclerView.OnScrollListener {
//監聽回調
private UpPullOnScrollListener listener;

public UpPullRecyclerViewOnScrollListener(UpPullOnScrollListener listener) {
this.listener = listener;
}
/**
* 標記是否正在向上滑動
*/
boolean isUpPull = false;
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();

if (newState == RecyclerView.SCROLL_STATE_IDLE) {
//總數
int itemCount = manager.getItemCount();
//最后顯示的位置
int lastItemPosition = manager.findLastCompletelyVisibleItemPosition();

if (lastItemPosition == (itemCount - 1) && isUpPull) {
listener.onLoadMoreData();
}
//第一個顯示的位置
int fristItemPosition = manager.findFirstCompletelyVisibleItemPosition();
if (fristItemPosition == (0) && !isUpPull){
listener.onRefreshData();
}
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
// 大於0表示正在向上滑動,小於等於0表示停止或向下滑動
isUpPull = dy > 0;
}
}
--------------------- 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM