public static int getSpanCount(@NonNull RecyclerView rv) { RecyclerView.LayoutManager layoutManager = rv.getLayoutManager(); if (layoutManager instanceof GridLayoutManager) { return ((GridLayoutManager) layoutManager).getSpanCount(); } else if (layoutManager instanceof StaggeredGridLayoutManager) { return ((StaggeredGridLayoutManager) layoutManager).getSpanCount(); } else { return 1; } }
/** * If a grid layout manager is set we sync the span count between the layout and the epoxy * adapter automatically. */ private void syncSpanCount() { LayoutManager layout = getLayoutManager(); if (layout instanceof GridLayoutManager && epoxyController != null) { GridLayoutManager grid = (GridLayoutManager) layout; if (epoxyController.getSpanCount() != grid.getSpanCount() || grid.getSpanSizeLookup() != epoxyController.getSpanSizeLookup()) { epoxyController.setSpanCount(grid.getSpanCount()); grid.setSpanSizeLookup(epoxyController.getSpanSizeLookup()); } } }
@Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { if (!isInset(view, parent)) return; GridLayoutManager.LayoutParams layoutParams = (GridLayoutManager.LayoutParams) view.getLayoutParams(); GridLayoutManager gridLayoutManager = (GridLayoutManager) parent.getLayoutManager(); float spanSize = layoutParams.getSpanSize(); float totalSpanSize = gridLayoutManager.getSpanCount(); float n = totalSpanSize / spanSize; // num columns float c = layoutParams.getSpanIndex() / spanSize; // column index float leftPadding = padding * ((n - c) / n); float rightPadding = padding * ((c + 1) / n); outRect.left = (int) leftPadding; outRect.right = (int) rightPadding; outRect.bottom = padding; }
@Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); if (recyclerView.getLayoutManager() instanceof GridLayoutManager) { GridLayoutManager gridManager = (GridLayoutManager) recyclerView.getLayoutManager(); spanCount = gridManager.getSpanCount(); originalSpanLookup = gridManager.getSpanSizeLookup(); gridManager.setSpanSizeLookup(spanSizes); } }
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 int getSpanSize(int position) { int itemType = helper.getItemViewType(position); if ((itemType >= -1000 && itemType < 0) || (itemType >= -3000 && itemType < -2000)) { return layout.getSpanCount(); } return 1; } });
@Override public int getSpanSize(int position) { switch (discoverMoviesAdapter.getItemViewType(position)) { case R.layout.item_network_state: return layoutManager.getSpanCount(); default: return 1; } } });
public static Integer getSpanSize(RecyclerView rv) { final RecyclerView.LayoutManager lm = rv.getLayoutManager(); if(lm != null && lm instanceof GridLayoutManager) return ((GridLayoutManager)lm).getSpanCount(); return 1; }
@Override public int getSpanSize(int position) { if(rv == null) return 1; return adapter.isHeader(position) ? ((GridLayoutManager) lm).getSpanCount() : 1; } });
@Override public int getSpanSize(int position) { boolean isShowHeader = (position == 0 && hasHeader()); boolean isShowFooter = (position == getItemCount() - 1 && hasFooter()); if (isShowFooter || isShowHeader) { return gridLayoutManager.getSpanCount(); } return 1; } });
public void setVisibleThreshold(int threshold) { visibleThreshold = threshold; if (mLayoutManager instanceof GridLayoutManager) { visibleThreshold = visibleThreshold * ((GridLayoutManager) mLayoutManager).getSpanCount(); } else if (mLayoutManager instanceof StaggeredGridLayoutManager) { visibleThreshold = visibleThreshold * ((StaggeredGridLayoutManager) mLayoutManager).getSpanCount(); } }
@Override public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { final int position = parent.getChildAdapterPosition(view); // get the current number of columns for the grid final int spanCount = ((GridLayoutManager) parent.getLayoutManager()).getSpanCount(); final int left = isFirstInRow(position, spanCount) ? 0 : mHalfSpacingOffsetPX; final int top = isInFirstRow(position, spanCount) ? 0 : mSpacingOffsetPX; final int right = isLastInRow(position, spanCount) ? 0 : mHalfSpacingOffsetPX; // the offset for the bottom should always be 0 because the top margin of the next row will apply. outRect.set(left, top, right, 0); }
private int getRowCount() { int rowCount = materialScrollBar.recyclerView.getLayoutManager().getItemCount(); if(materialScrollBar.recyclerView.getLayoutManager() instanceof GridLayoutManager) { int spanCount = ((GridLayoutManager) materialScrollBar.recyclerView.getLayoutManager()).getSpanCount(); rowCount = (int) Math.ceil((double) rowCount / spanCount); } return rowCount; }
@Override public int getSpanSize(int position) { switch (recyclerView.getAdapter().getItemViewType(position)) { case DynamicRecyclerViewAdapter.TYPE_EMPTY_VIEW: case DynamicRecyclerViewAdapter.TYPE_SECTION_HEADER: return ((GridLayoutManager) recyclerView.getLayoutManager()).getSpanCount(); case DynamicRecyclerViewAdapter.TYPE_ITEM: return 1; default: return -1; } } });
scrollPosState.rowIndex = scrollPosState.rowIndex / ((GridLayoutManager) materialScrollBar.recyclerView.getLayoutManager()).getSpanCount();
mScrollSpeed = (int) (1000 / timeScrollPerRow) * ((GridLayoutManager) layoutManager).getSpanCount(); } else { mScrollSpeed = (int) (1000 / timeScrollPerRow);
void scrollHandleAndIndicator() { int scrollBarY; getCurScrollState(); if(customScroller != null) { constant = customScroller.getDepthForItem(materialScrollBar.recyclerView.getChildAdapterPosition(materialScrollBar.recyclerView.getChildAt(0))); } else { constant = scrollPosState.rowHeight * scrollPosState.rowIndex; } constant += + materialScrollBar.recyclerView.getPaddingTop(); scrollBarY = (int) getScrollPosition(); materialScrollBar.handleThumb.setY(scrollBarY); materialScrollBar.handleThumb.invalidate(); if(materialScrollBar.indicator != null) { int element; if(materialScrollBar.recyclerView.getLayoutManager() instanceof GridLayoutManager) { element = scrollPosState.rowIndex * ((GridLayoutManager)materialScrollBar.recyclerView.getLayoutManager()).getSpanCount(); } else { element = scrollPosState.indicatorPosition; } materialScrollBar.indicator.setText(element); materialScrollBar.indicator.setScroll(scrollBarY + materialScrollBar.getTop()); } }
int spanCount = 1; if(materialScrollBar.recyclerView.getLayoutManager() instanceof GridLayoutManager) { spanCount = ((GridLayoutManager) materialScrollBar.recyclerView.getLayoutManager()).getSpanCount();