У меня есть 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;
}
}