我想检查smoothScrollToPosition
何时完成滚动回到recyclerview
的第一项。我尝试这样做,仅在smoothScrollToPosition仍在滚动时才起作用:
recyclerView.getLayoutManager().smoothScrollToPosition(recyclerView,new RecyclerView.State(), 0);
if (!recyclerView.getLayoutManager().isSmoothScrolling()) {
Log.d(TAG, "Scrolling has ended.");
}
答案 0 :(得分:3)
我使用onScrollStateChanged(RecyclerView recyclerView, int newState)
方法跟踪滚动状态。启动滚动的方法如下:
private void scrollToPosition(int position){
recyclerView.removeOnScrollListener(onScrollListener);
recyclerView.addOnScrollListener(onScrollListener);
recyclerView.smoothScrollToPosition(position);
}
这是侦听器:
RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
switch (newState) {
case SCROLL_STATE_IDLE:
//we reached the target position
recyclerView.removeOnScrollListener(this);
break;
}
}
};
因此,当recyclerView到达SCROLL_STATE_IDLE时,这意味着它已完成滚动。不要忘记在这种状态下删除侦听器,这样它将不会在下一次滚动时触发。
答案 1 :(得分:-1)
有一个监听器:
https://developer.android.com/reference/android/support/v7/widget/RecyclerView.OnScrollListener
void onScrolled (RecyclerView recyclerView,
int dx,
int dy)
滚动RecyclerView时要调用的回调方法。 将在滚动完成后调用。
答案 2 :(得分:-1)
这可能就是您想要的。
基本上,您只需要在设置的回收器中实现侦听器
我希望我能帮上忙。
更新:代替使用
recyclerView.setOnScrollListener(new EndlessRecyclerOnScrollListener(linearLayoutManager) {
@Override
public void onLoadMore(int current_page) {
// do something...
}
});
您必须使用
recyclerView.addOnScrollListener(new EndlessRecyclerOnScrollListener(mana) {
@Override
public void onLoadMore(int page, int totalItemsCount, RecyclerView view) {
}
});
我个人想使用