/** * @param recyclerView the recycler view * @return true if managed by an {@link BaseEpoxyAdapter} */ private boolean notEpoxyManaged(@Nullable RecyclerView recyclerView) { return recyclerView == null || !(recyclerView.getAdapter() instanceof BaseEpoxyAdapter); } }
/** * If there is a new adapter on the attached RecyclerView it will resister the data observer and * clear the current visibility states */ private void processNewAdapterIfNecessary() { if (attachedRecyclerView != null && attachedRecyclerView.getAdapter() != null) { if (lastAdapterSeen != attachedRecyclerView.getAdapter()) { if (lastAdapterSeen != null) { // Unregister the old adapter lastAdapterSeen.unregisterAdapterDataObserver(this.observer); } // Register the new adapter attachedRecyclerView.getAdapter().registerAdapterDataObserver(this.observer); lastAdapterSeen = attachedRecyclerView.getAdapter(); } } }
/** * @param recyclerView the RecyclerView * @param adapter the MultiTypeAdapter * @throws IllegalAccessError The assertHasTheSameAdapter() method must be placed after * recyclerView.setAdapter(). * @throws IllegalArgumentException If your recyclerView's adapter. * is not the sample with the argument adapter. */ public static void assertHasTheSameAdapter(@NonNull RecyclerView recyclerView, @NonNull MultiTypeAdapter adapter) throws IllegalArgumentException, IllegalAccessError { checkNotNull(recyclerView); checkNotNull(adapter); if (recyclerView.getAdapter() == null) { throw new IllegalAccessError("The assertHasTheSameAdapter() method must " + "be placed after recyclerView.setAdapter()"); } if (recyclerView.getAdapter() != adapter) { throw new IllegalArgumentException( "Your recyclerView's adapter is not the sample with the argument adapter."); } } }
private int getWrappedItemPosition(RecyclerView.ViewHolder holder) { final RecyclerView.Adapter rootAdapter = mRecyclerView.getAdapter(); final int rootItemPosition = CustomRecyclerViewUtils.getSynchronizedPosition(holder); return WrapperAdapterUtils.unwrapPosition(rootAdapter, mWrapperAdapter, rootItemPosition); }
private int getWrappedAdapterPosition(RecyclerView.ViewHolder vh) { if (vh == null) { return RecyclerView.NO_POSITION; } return WrapperAdapterUtils.unwrapPosition(mRecyclerView.getAdapter(), mWrapperAdapter, mComposedAdapterTag, vh.getAdapterPosition()); }
@Override public boolean onQueryTextChange(String newText) { TagsArrayAdapter adapter = (TagsArrayAdapter) mTagsListRecyclerView.getAdapter(); adapter.getFilter().filter(newText); return true; } });
private void initAdapterIfNeeded() { if (mFastAdapter == null || mRecyclerView.getAdapter() == null) { mItemAdapter = ItemAdapter.items(); mFastAdapter = FastAdapter.with(mItemAdapter); mRecyclerView.setAdapter(mFastAdapter); } }
private void initAdapterIfNeeded() { if (mFastAdapter == null || mRecyclerView.getAdapter() == null) { mItemAdapter = ItemAdapter.items(); mFastAdapter = FastAdapter.with(mItemAdapter); mRecyclerView.setAdapter(mFastAdapter); } }
final RecyclerView.Adapter rootAdapter = mRecyclerView.getAdapter(); final int rootItemPosition = CustomRecyclerViewUtils.getSynchronizedPosition(holder);
if (draggingItemPosition < (fc.rv.getAdapter().getItemCount() - 1)) { swapTargetHolder = fc.rv.findViewHolderForAdapterPosition(draggingItemPosition + 1);
@SuppressWarnings("BooleanMethodIsAlwaysInverted") private boolean canStartDrag(RecyclerView.ViewHolder holder, int touchX, int touchY) { final int origRootPosition = holder.getAdapterPosition(); final int wrappedItemPosition = WrapperAdapterUtils.unwrapPosition(mRecyclerView.getAdapter(), mWrapperAdapter, null, origRootPosition); if (wrappedItemPosition == RecyclerView.NO_POSITION) { return false; } final View view = holder.itemView; final int translateX = (int) (view.getTranslationX() + 0.5f); final int translateY = (int) (view.getTranslationY() + 0.5f); final int viewX = touchX - (view.getLeft() + translateX); final int viewY = touchY - (view.getTop() + translateY); if (mWrapperAdapter.canStartDrag(holder, wrappedItemPosition, viewX, viewY)) { // NOTE: notifyXXX method might be called inside of the user implemented code. that is not acceptable. return (holder.getAdapterPosition() == origRootPosition); } else { return false; } }
private ItemDraggableRange convertToRootAdapterRange(AdapterPath path, ItemDraggableRange src) { final RecyclerView.Adapter rootAdapter = mRecyclerView.getAdapter(); final int start = WrapperAdapterUtils.wrapPosition(path, mWrapperAdapter, rootAdapter, src.getStart()); final int end = WrapperAdapterUtils.wrapPosition(path, mWrapperAdapter, rootAdapter, src.getEnd()); return new ItemDraggableRange(start, end); }
private void createIndicators() { removeAllViews(); RecyclerView.Adapter adapter = mRecyclerView.getAdapter(); int count; if (adapter == null || (count = adapter.getItemCount()) <= 0) { return; } createIndicators(count, getSnapPosition(mRecyclerView.getLayoutManager())); }
flatPosition = WrapperAdapterUtils.wrapPosition(path, mWrapperAdapter, mRecyclerView.getAdapter(), flatPosition);
final RecyclerView.Adapter rootAdapter = mRecyclerView.getAdapter(); final AdapterPath path = new AdapterPath();
private void calculatePositionDetails(RecyclerView parent, int position, LayoutManager layout) { int itemCount = parent.getAdapter().getItemCount(); firstItem = position == 0; lastItem = position == itemCount - 1; horizontallyScrolling = layout.canScrollHorizontally(); verticallyScrolling = layout.canScrollVertically(); grid = layout instanceof GridLayoutManager; if (grid) { GridLayoutManager grid = (GridLayoutManager) layout; final SpanSizeLookup spanSizeLookup = grid.getSpanSizeLookup(); int spanSize = spanSizeLookup.getSpanSize(position); int spanCount = grid.getSpanCount(); int spanIndex = spanSizeLookup.getSpanIndex(position, spanCount); isFirstItemInRow = spanIndex == 0; fillsLastSpan = spanIndex + spanSize == spanCount; isInFirstRow = isInFirstRow(position, spanSizeLookup, spanCount); isInLastRow = !isInFirstRow && isInLastRow(position, itemCount, spanSizeLookup, spanCount); } }
@Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { // remember the from/to positions IItem item = FastAdapter.getHolderAdapterItem(viewHolder); if (item instanceof IDraggable) { if (((IDraggable) item).isDraggable()) { if (mFrom == RecyclerView.NO_POSITION) { mFrom = viewHolder.getAdapterPosition(); } mTo = target.getAdapterPosition(); } } if (mCallbackItemTouch == null) { RecyclerView.Adapter adapter = recyclerView.getAdapter(); ItemAdapter itemAdapter = null; if (adapter instanceof FastItemAdapter) { itemAdapter = ((FastItemAdapter) adapter).getItemAdapter(); } else if (adapter instanceof FastAdapter) { //TODO this logic only works for the adapter at position 0 --> in the past it also only worked for the outer adapter itemAdapter = (ItemAdapter) ((FastAdapter) adapter).adapter(0); } if (itemAdapter != null) { itemAdapter.move(itemAdapter.getFastAdapter().getHolderAdapterPosition(viewHolder), itemAdapter.getFastAdapter().getHolderAdapterPosition(target)); return true; } throw new RuntimeException("SimpleDragCallback without an callback is only allowed when using the ItemAdapter or the FastItemAdapter"); } return mCallbackItemTouch.itemTouchOnMove(viewHolder.getAdapterPosition(), target.getAdapterPosition()); // information to the interface }
private int getIndicatorPosition(){ if(materialScrollBar.scrollMode == MaterialScrollBar.ScrollMode.FIRST_VISIBLE) { return scrollPosState.rowIndex; } else { int itemCount = materialScrollBar.recyclerView.getAdapter().getItemCount(); int itemIndex = ((int) (itemCount * materialScrollBar.currentScrollPercent)); return itemIndex > 0 ? itemIndex - 1 : itemIndex; } } }
@Override public void onChanged() { if (mRecyclerView.getAdapter().getItemCount() > 0) mRecyclerView.setVisibility(View.VISIBLE); else mRecyclerView.setVisibility(View.GONE); } };
public static void initHeaderScroller(RecyclerView rv) { RecyclerView.Adapter adapter = rv.getAdapter(); if(adapter instanceof IHeaderAdapter) { ((IHeaderAdapter) adapter).initScrollManager(getSpanSize(rv)); initSpanSizeLookup(rv, (IHeaderAdapter)adapter); } }