public static int findLastCompletelyVisibleItemPosition(@NonNull RecyclerView rv) { RecyclerView.LayoutManager layoutManager = rv.getLayoutManager(); if (layoutManager instanceof LinearLayoutManager) { return (((LinearLayoutManager) layoutManager).findLastCompletelyVisibleItemPosition()); } else { return RecyclerView.NO_POSITION; } }
private int getSnappedPosition(RecyclerView recyclerView) { RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); if (layoutManager instanceof LinearLayoutManager) { if (gravity == Gravity.START || gravity == Gravity.TOP) { return ((LinearLayoutManager) layoutManager).findFirstCompletelyVisibleItemPosition(); } else if (gravity == Gravity.END || gravity == Gravity.BOTTOM) { return ((LinearLayoutManager) layoutManager).findLastCompletelyVisibleItemPosition(); } } return RecyclerView.NO_POSITION; }
.findLastCompletelyVisibleItemPosition() == layoutManager.getItemCount() - 1;
/** * Returns the last completely visible grid position. * * @return the last completely visible position or RecyclerView.NO_POSITION if any error occurs. * @see #getLastVisiblePosition() */ public int getLastCompletelyVisiblePosition() { LayoutManager lm = getLayoutManager(); if (lm instanceof LinearLayoutManager) { LinearLayoutManager llm = (LinearLayoutManager) lm; return llm.findLastCompletelyVisibleItemPosition(); } else { StaggeredGridLayoutManager sglm = (StaggeredGridLayoutManager) lm; if (sglm == null) { return NO_POSITION; } int[] lastVisibleItemPositions = sglm.findLastCompletelyVisibleItemPositions(null); Arrays.sort(lastVisibleItemPositions); return lastVisibleItemPositions[lastVisibleItemPositions.length - 1]; } }
private void updateScrollPosition() { int pos = mAdapter.getSelectedItemIndex(); if (pos == -1) return; int s = mLayoutManager.findFirstCompletelyVisibleItemPosition(); int e = mLayoutManager.findLastCompletelyVisibleItemPosition(); if (pos < s || pos > e) { mLayoutManager.scrollToPositionWithOffset(pos, (mLayoutManager.getHeight() - mLayoutManager.getPaddingTop() - mLayoutManager.getPaddingBottom()) / 3); } }
public LongPressSelectTouchListener(RecyclerView recyclerView) { mRecyclerView = recyclerView; mScroller = new RecyclerViewScrollerRunnable(recyclerView, (int scrollDir) -> { LinearLayoutManager llm = (LinearLayoutManager) mRecyclerView.getLayoutManager(); updateHighlightedElements(mRecyclerView, mRecyclerView.getAdapter().getItemId( scrollDir > 0 ? llm.findLastCompletelyVisibleItemPosition() : llm.findFirstCompletelyVisibleItemPosition())); }); }
private void updateOverscrollMode() { LinearLayoutManager lm = (LinearLayoutManager) mRecyclerView.getLayoutManager(); if (lm.findFirstCompletelyVisibleItemPosition() == 0 && lm.findLastCompletelyVisibleItemPosition() == mRecyclerView.getAdapter().getItemCount() - 1) { mRecyclerView.setOverScrollMode(RecyclerView.OVER_SCROLL_NEVER); } else { mRecyclerView.setOverScrollMode(RecyclerView.OVER_SCROLL_ALWAYS); } }
LinearLayoutManager llm = (LinearLayoutManager) mRecyclerView.getLayoutManager(); int firstPos = llm.findFirstCompletelyVisibleItemPosition(); int lastPos = llm.findLastCompletelyVisibleItemPosition(); long firstId = mAdapter.getItemId(firstPos); long lastId = mAdapter.getItemId(lastPos);