public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
log("onScrollStateChanged.................");
if(newState == SCROLL_STATE_IDLE){
if(! ViewUtil.canChildScrollUp(recyclerView)){
swipeToLoadLayout.setLoadingMore(true);
}
}
}
最开始是向上面这样做的,但是这样做会有一个问题:当快速滑动的时候,明明界面上面已经滚到底部了,但是程序需要很长时间才会回调onScrollStateChanged(),大概需要好几秒的,用户体验很差。
正确的做法如下:
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
log("onScrolled................dy = " + dy);
if(! ViewUtil.canChildScrollUp(recyclerView)){
recyclerView.stopScroll();//该方法的调用起了关键作用
swipeToLoadLayout.setLoadingMore(true);
}
}