private void handleScroll(RecyclerView recyclerView) { if (scrollState != RecyclerView.SCROLL_STATE_IDLE) { return; } DragInfo lastDragInfo = dragManager.getLastDragInfo(); if (lastDragInfo != null) { handleDragScroll(recyclerView, lastDragInfo); } }
void handleDragScroll(RecyclerView rv, DragInfo dragInfo) { if (rv.getLayoutManager().canScrollHorizontally()) { if (rv.canScrollHorizontally(-1) && dragInfo.shouldScrollLeft()) { rv.scrollBy(-SCROLL_AMOUNT, 0); dragManager.clearNextMove(); } else if (rv.canScrollHorizontally(1) && dragInfo.shouldScrollRight(rv.getWidth())) { rv.scrollBy(SCROLL_AMOUNT, 0); dragManager.clearNextMove(); } } else if (rv.getLayoutManager().canScrollVertically()) { if (rv.canScrollVertically(-1) && dragInfo.shouldScrollUp()) { rv.scrollBy(0, -SCROLL_AMOUNT); dragManager.clearNextMove(); } else if (rv.canScrollVertically(1) && dragInfo.shouldScrollDown(rv.getHeight())) { rv.scrollBy(0, SCROLL_AMOUNT); dragManager.clearNextMove(); } } }
/** * You probably want to use this to set the currently dragging item to blank while it's being * dragged * * @return the id of the item currently being dragged or {@code RecyclerView.NO_ID } if not being * dragged */ public long getDraggingId() { return dragManager.getDraggingId(); }