Как определить, когда RecyclerView с SnapHelper прокручивается до следующего элемента? - PullRequest
1 голос
/ 06 апреля 2019

У меня есть RecyclerView с SnapHelper для использования RecyclerView, например ViewPager, для просмотра элементов один за другим (например, PagerView).

Как определить, когда пользователь перетянулся к следующему элементу RecyclerView?

Я пробовал addOnScrollListener, используя onScrollStateChanged и onScrolled, но они вызывали много раз, когда пользователь прокручивал от элемента к следующему элементу.

Любую идею, как я могу определить, когда пользователь перешел к следующему элементу RecyclerView, пожалуйста.

Спасибо

SnapHelper Класс:

public class SnapHelperOneByOne extends LinearSnapHelper {
@Override
public int findTargetSnapPosition(RecyclerView.LayoutManager 
layoutManager, int velocityX, int velocityY) {

    if (!(layoutManager instanceof RecyclerView.SmoothScroller.ScrollVectorProvider)) {
        return RecyclerView.NO_POSITION;
    }
    final View currentView = findSnapView(layoutManager);
    if (currentView == null) {
        return RecyclerView.NO_POSITION;
    }
    LinearLayoutManager myLayoutManager = (LinearLayoutManager) 
 layoutManager;
    int position1 = myLayoutManager.findFirstVisibleItemPosition();
    int position2 = myLayoutManager.findLastVisibleItemPosition();
    int currentPosition = layoutManager.getPosition(currentView);
    if (velocityX > 400) {
        currentPosition = position2;
    } else if (velocityX < 400) {
        currentPosition = position1;
    }
    if (currentPosition == RecyclerView.NO_POSITION) {
        return RecyclerView.NO_POSITION;
    }
    return currentPosition;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...