@Override
public void onBindViewHolder(@NonNull VH holder, int position, @NonNull List<Object> payloads) {
if (isDragging()) {
final long draggingItemId = mDraggingItemInfo.id;
final long itemId = holder.getItemId();
final int origPosition = convertToOriginalPosition(
position, mDraggingItemInitialPosition, mDraggingItemCurrentPosition, mItemMoveMode);
if (itemId == draggingItemId && holder != mDraggingItemViewHolder) {
if (LOCAL_LOGI) {
Log.i(TAG, "a new view holder object for the currently dragging item is assigned");
}
mDraggingItemViewHolder = holder;
mDragDropManager.onNewDraggingItemViewBound(holder);
}
int flags = Constants.STATE_FLAG_DRAGGING;
if (itemId == draggingItemId) {
flags |= Constants.STATE_FLAG_IS_ACTIVE;
}
if (mDraggableRange.checkInRange(position)) {
flags |= Constants.STATE_FLAG_IS_IN_RANGE;
}
safeUpdateFlags(holder, flags);
super.onBindViewHolder(holder, origPosition, payloads);
} else {
safeUpdateFlags(holder, 0);
super.onBindViewHolder(holder, position, payloads);
}
}