if (draggingItemPosition < (fc.rv.getAdapter().getItemCount() - 1)) { swapTargetHolder = fc.rv.findViewHolderForAdapterPosition(draggingItemPosition + 1);
@Override public boolean shouldInsertItemAtPosition(int position) { if (getAdapter().getItemCount() > 0 && getItems().size() > 0) { int itemsInBetween = (getAdapter().getItemCount() + getItems().size()) / (getItems().size() + 1) + 1; return (position + 1) % itemsInBetween == 0; } return false; }
@Override public int itemInsertedBeforeCount(int position) { if (getAdapter().getItemCount() > 0 && getItems().size() > 0) { int itemsInBetween = (getAdapter().getItemCount() + getItems().size()) / (getItems().size() + 1) + 1; return position / itemsInBetween; } return 0; } }
int popupY = location[1] - marginHalf * 2 - (itemHeight - (anchorView.getHeight() - anchorView.getPaddingTop() - anchorView.getPaddingBottom())) / 2 + anchorView.getPaddingTop(); int popupWidth = anchorView.getWidth() + margin * 2 + marginHalf * 2 - anchorView.getPaddingLeft() - anchorView.getPaddingRight(); int popupHeight = marginHalf * 4 + Math.min(recycler.getAdapter().getItemCount(), maxItems) * itemHeight;
int popupY = location[1] - marginHalf * 2 - (itemHeight - (mAnchorView.getHeight() - mAnchorView.getPaddingTop() - mAnchorView.getPaddingBottom())) / 2 + mAnchorView.getPaddingTop(); int popupWidth = mAnchorView.getWidth() + margin * 2 + marginHalf * 2 - mAnchorView.getPaddingLeft() - mAnchorView.getPaddingRight(); int popupHeight = marginHalf * 4 + Math.min(recycler.getAdapter().getItemCount(), maxItems) * itemHeight;
protected void onContentHeightChanged(int contentHeight) { int padding = getContext().getResources().getDimensionPixelSize(R.dimen.carbon_paddingHalf); int height = padding * 2; for (int i = 0; i < recyclerView.getChildCount(); i++) height += recyclerView.getChildAt(i).getHeight(); height += recyclerView.getAdapter().getItemCount() - recyclerView.getChildCount(); if (height > contentHeight) { if (topDivider != null) topDivider.setVisibility(View.VISIBLE); if (bottomDivider != null) bottomDivider.setVisibility(View.VISIBLE); } else { if (topDivider != null) topDivider.setVisibility(View.GONE); if (bottomDivider != null) bottomDivider.setVisibility(View.GONE); } }
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); } }
public int getSegmentItemCount(int segment) { if (mSegmentItemCountCache[segment] != NO_CACHED_ITEM_COUNT) { // cache hit return mSegmentItemCountCache[segment]; } else { // cache miss final int count = mAdaptersSet.getAdapter(segment).getItemCount(); mSegmentItemCountCache[segment] = count; if (segment == mLastOffsetCachedSegment) { mSegmentOffsetCache[segment + 1] = mSegmentOffsetCache[segment] + count; mLastOffsetCachedSegment = segment + 1; } return count; } }
@Override public void onItemRangeRemoved(int positionStart, int itemCount) { boolean empty = adapter.getItemCount() == 0; if (empty && !isEmpty) { isEmpty = empty; groupDataObserver.onItemRemoved(carouselItem, 0); } }
public int getMaxScrollY() { Adapter adapter = getAdapter(); LayoutManager layoutManager = getLayoutManager(); if (adapter == null || layoutManager == null || getChildCount() == 0 || adapter.getItemCount() == 0) return 0; View view = getChildAt(getChildCount() - 1); int position = getChildAdapterPosition(view); if (position == adapter.getItemCount()) return Math.max(0, view.getBottom() - getHeight()); return Integer.MAX_VALUE; }
/** * make sure we return the count from the FastAdapter so we retrieve the count from all adapters * * @return */ @Override public int getItemCount() { int itemCount = mAdapter.getItemCount(); return itemCount + itemInsertedBeforeCount(itemCount); }
@Override public void onItemRangeInserted(int positionStart, int itemCount) { boolean empty = adapter.getItemCount() == 0; if (isEmpty && !empty) { isEmpty = empty; groupDataObserver.onItemInserted(carouselItem, 0); } } };
static int getItemPosition(@Nullable RecyclerView.Adapter adapter, long itemId, int itemPositionGuess) { if (adapter == null) return RecyclerView.NO_POSITION; final int itemCount = adapter.getItemCount(); if (itemPositionGuess >= 0 && itemPositionGuess < itemCount) { if (adapter.getItemId(itemPositionGuess) == itemId) return itemPositionGuess; } for (int i = 0; i < itemCount; i++) { if (adapter.getItemId(i) == itemId) return i; } return RecyclerView.NO_POSITION; }
public int getMaxScrollX() { Adapter adapter = getAdapter(); LayoutManager layoutManager = getLayoutManager(); if (adapter == null || layoutManager == null || getChildCount() == 0 || adapter.getItemCount() == 0) return 0; View view = getChildAt(getChildCount() - 1); int position = getChildAdapterPosition(view); if (position == adapter.getItemCount()) return Math.max(0, view.getRight() - getWidth()); return Integer.MAX_VALUE; }
@SuppressWarnings("BooleanMethodIsAlwaysInverted") private boolean checkTouchedItemState(RecyclerView rv, RecyclerView.ViewHolder holder) { if (!(holder instanceof DraggableItemViewHolder)) { return false; } final int wrappedItemPosition = getWrappedAdapterPosition(holder); final RecyclerView.Adapter adapter = mWrapperAdapter; // verify the touched item is valid state //noinspection RedundantIfStatement if (!(wrappedItemPosition >= 0 && wrappedItemPosition < adapter.getItemCount())) { return false; } return true; }
private void createIndicators() { removeAllViews(); RecyclerView.Adapter adapter = mRecyclerView.getAdapter(); int count; if (adapter == null || (count = adapter.getItemCount()) <= 0) { return; } createIndicators(count, getSnapPosition(mRecyclerView.getLayoutManager())); }
@Test public void wrapPosition() throws Exception { RecyclerView.Adapter adapter = new GoodWrapperAdapter(new TestAdapter()); DebugWrapperAdapter debugAdapter = new DebugWrapperAdapter(adapter); for (int i = 0; i < adapter.getItemCount(); i++) { UnwrapPositionResult result = new UnwrapPositionResult(); debugAdapter.unwrapPosition(result, i); AdapterPath path = new AdapterPath().append(result); int wrappedPosition = debugAdapter.wrapPosition(path.lastSegment(), result.position); assertThat(wrappedPosition, is(i)); } }
@Test public void unwrapPosition() throws Exception { RecyclerView.Adapter adapter = new GoodWrapperAdapter(new TestAdapter()); DebugWrapperAdapter debugAdapter = new DebugWrapperAdapter(adapter); for (int i = 0; i < adapter.getItemCount(); i++) { UnwrapPositionResult result = new UnwrapPositionResult(); debugAdapter.unwrapPosition(result, i); assertThat(result.isValid(), is(true)); assertThat(result.adapter, is(adapter)); assertThat(result.position, is(i)); } }
/** * {@inheritDoc} */ @Override public int getItemCount() { return isWrappedAdapterAlive() ? mWrappedAdapter.getItemCount() : 0; }
@Override public int getItemCount() { return mAdapter.getItemCount(); }