检查smoothScrollToPosition何时完成

时间:2018-07-10 09:10:32

标签: java android android-recyclerview

我想检查smoothScrollToPosition何时完成滚动回到recyclerview的第一项。我尝试这样做,仅在smoothScrollToPosition仍在滚动时才起作用:

recyclerView.getLayoutManager().smoothScrollToPosition(recyclerView,new RecyclerView.State(), 0);
if (!recyclerView.getLayoutManager().isSmoothScrolling()) {
    Log.d(TAG, "Scrolling has ended.");
} 

3 个答案:

答案 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)

这可能就是您想要的。

基本上,您只需要在设置的回收器中实现侦听器

Listener scroll Recycler

我希望我能帮上忙。

更新:代替使用

 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) {

        }
    });

我个人想使用

Pull to refresh