@Override public void onBindViewHolder(VH holder, int position) { if (isDragging()) { final long itemId = holder.getItemId(); final int origPosition = convertToOriginalPosition( position, mDraggingItemInitialPosition, mDraggingItemCurrentPosition); if (itemId == mDraggingItemId && holder != mDraggingItem) { if (mDraggingItem == null) { if (LOCAL_LOGI) { Log.i(TAG, "a new view holder object for the currently dragging item is assigned"); } mDraggingItem = holder; mDragDropManager.onNewDraggingItemViewBinded(holder); } else { Log.e(TAG, "an another view holder object for the currently dragging item is assigned"); } } int flags = RecyclerViewDragDropManager.STATE_FLAG_DRAGGING; if (itemId == mDraggingItemId) { flags |= RecyclerViewDragDropManager.STATE_FLAG_IS_ACTIVE; } if (mDraggableRange.checkInRange(position)) { flags |= RecyclerViewDragDropManager.STATE_FLAG_IS_IN_RANGE; } safeUpdateFlags(holder, flags); super.onBindViewHolder(holder, origPosition); } else { safeUpdateFlags(holder, 0); super.onBindViewHolder(holder, position); } }