// NOTE: This method is called from RecyclerViewDragDropManager /*package*/ void onDragItemFinished(RecyclerView.ViewHolder holder, boolean result) { if (LOCAL_LOGD) { Log.d(TAG, "onDragItemFinished(holder = " + holder + ", result = " + result + ")"); } if (holder != null && holder != mDraggingItem) { throw new IllegalStateException( "onDragItemFinished() - may be a bug (mDraggingItem != holder)"); } if (DEBUG_BYPASS_MOVE_OPERATION_MODE) { return; } if (result && (mDraggingItemCurrentPosition != mDraggingItemInitialPosition)) { // apply to wrapped adapter DraggableItemAdapter adapter = WrapperAdapterUtils.findWrappedAdapter(getWrappedAdapter(), DraggableItemAdapter.class); adapter.onMoveItem(mDraggingItemInitialPosition, mDraggingItemCurrentPosition); } mDraggingItemInitialPosition = RecyclerView.NO_POSITION; mDraggingItemCurrentPosition = RecyclerView.NO_POSITION; mDraggableRange = null; mDraggingItemId = RecyclerView.NO_ID; mDraggingItem = null; notifyDataSetChanged(); }
// NOTE: This method is called from RecyclerViewDragDropManager /*package*/ void moveItem(int fromPosition, int toPosition) { if (LOCAL_LOGD) { Log.d( TAG, "onMoveItem(fromPosition = " + fromPosition + ", toPosition = " + toPosition + ")"); } if (DEBUG_BYPASS_MOVE_OPERATION_MODE) { mDraggableItemAdapter.onMoveItem(fromPosition, toPosition); return; } final int origFromPosition = convertToOriginalPosition( fromPosition, mDraggingItemInitialPosition, mDraggingItemCurrentPosition); if (origFromPosition != mDraggingItemInitialPosition) { throw new IllegalStateException( "onMoveItem() - may be a bug or has duplicate IDs --- " + "mDraggingItemInitialPosition = " + mDraggingItemInitialPosition + ", " + "mDraggingItemCurrentPosition = " + mDraggingItemCurrentPosition + ", " + "origFromPosition = " + origFromPosition + ", " + "fromPosition = " + fromPosition + ", " + "toPosition = " + toPosition); } mDraggingItemCurrentPosition = toPosition; // NOTE: // Don't move items in wrapped adapter here. // notify to observers notifyItemMoved(fromPosition, toPosition); }