/** * {@inheritDoc} */ @Override public void unwrapPosition(@NonNull UnwrapPositionResult dest, int position) { dest.adapter = getWrappedAdapter(); dest.position = position; }
protected void onHandleWrappedAdapterChanged() { notifyDataSetChanged(); }
protected void onHandleWrappedAdapterRangeMoved(int fromPosition, int toPosition, int itemCount) { if (itemCount != 1) { throw new IllegalStateException("itemCount should be always 1 (actual: " + itemCount + ")"); } notifyItemMoved(fromPosition, toPosition); }
/** * {@inheritDoc} */ @Override public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { if (isWrappedAdapterAlive()) mWrappedAdapter.onAttachedToRecyclerView(recyclerView); }
/** * {@inheritDoc} */ @Override public void onBindViewHolder(@NonNull VH holder, int position) { onBindViewHolder(holder, position, FULL_UPDATE_PAYLOADS); }
protected void onHandleWrappedAdapterItemRangeChanged(int positionStart, int itemCount, Object payload) { notifyItemRangeChanged(positionStart, itemCount, payload); }
protected void onHandleWrappedAdapterItemRangeRemoved(int positionStart, int itemCount) { notifyItemRangeRemoved(positionStart, itemCount); }
protected void onHandleWrappedAdapterItemRangeInserted(int positionStart, int itemCount) { notifyItemRangeInserted(positionStart, itemCount); }
@Override public int getItemViewType(int position) { if (isDragging()) { final int origPosition = convertToOriginalPosition( position, mDraggingItemInitialPosition, mDraggingItemCurrentPosition, mItemMoveMode); return super.getItemViewType(origPosition); } else { return super.getItemViewType(position); } }
/** * {@inheritDoc} */ @Override public int getItemCount() { return isWrappedAdapterAlive() ? mWrappedAdapter.getItemCount() : 0; }
@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); } }
protected void onHandleWrappedAdapterItemRangeChanged(int positionStart, int itemCount) { notifyItemRangeChanged(positionStart, itemCount); }
/** * {@inheritDoc} */ @Override public void onViewAttachedToWindow(@NonNull VH holder, int viewType) { if (isWrappedAdapterAlive()) { WrappedAdapterUtils.invokeOnViewAttachedToWindow(mWrappedAdapter, holder, viewType); } }
super.onBindViewHolder(holder, position, payloads); } else { safeUpdateFlags(holder, 0); super.onBindViewHolder(holder, position, payloads);
/** * {@inheritDoc} */ @Override public int wrapPosition(@NonNull AdapterPathSegment pathSegment, int position) { if (pathSegment.adapter == getWrappedAdapter()) { return position; } else { return RecyclerView.NO_POSITION; } }
/** * {@inheritDoc} */ @Override public void onViewDetachedFromWindow(@NonNull VH holder, int viewType) { if (isWrappedAdapterAlive()) { WrappedAdapterUtils.invokeOnViewDetachedFromWindow(mWrappedAdapter, holder, viewType); } }
public static <T> T findWrappedAdapter(@Nullable RecyclerView.Adapter adapter, @NonNull Class<T> clazz) { if (clazz.isInstance(adapter)) { return clazz.cast(adapter); } else if (adapter instanceof SimpleWrapperAdapter) { final RecyclerView.Adapter wrappedAdapter = ((SimpleWrapperAdapter) adapter).getWrappedAdapter(); return findWrappedAdapter(wrappedAdapter, clazz); } else { return null; } }
/** * {@inheritDoc} */ @Override public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) { if (isWrappedAdapterAlive()) mWrappedAdapter.onDetachedFromRecyclerView(recyclerView); }
/** * {@inheritDoc} */ @Override public void onViewRecycled(@NonNull VH holder, int viewType) { if (isWrappedAdapterAlive()) { WrappedAdapterUtils.invokeOnViewRecycled(mWrappedAdapter, holder, viewType); } }