public boolean canTriggerLoadMore(RecyclerView recyclerView) { View lastChild = recyclerView.getChildAt(recyclerView.getChildCount() - 1); int position = recyclerView.getChildLayoutPosition(lastChild); RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); int totalItemCount = layoutManager.getItemCount(); return totalItemCount - 1 == position; }
private void fillByRecyclerView(final List<ImageView> originImageList) { RecyclerView recyclerView = transConfig.getRecyclerView(); int childCount = recyclerView.getChildCount(); for (int i = 0; i < childCount; i++) { ImageView originImage = ((ImageView) recyclerView.getChildAt(i) .findViewById(transConfig.getImageId())); originImageList.add(originImage); } RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); int firstPos = 0, lastPos = 0; int totalCount = layoutManager.getItemCount(); if (layoutManager instanceof GridLayoutManager) { GridLayoutManager gridLayMan = (GridLayoutManager) layoutManager; firstPos = gridLayMan.findFirstVisibleItemPosition(); lastPos = gridLayMan.findLastVisibleItemPosition(); } else if (layoutManager instanceof LinearLayoutManager) { LinearLayoutManager linLayMan = (LinearLayoutManager) layoutManager; firstPos = linLayMan.findFirstVisibleItemPosition(); lastPos = linLayMan.findLastVisibleItemPosition(); } fillPlaceHolder(originImageList, totalCount, firstPos, lastPos); }
@Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if (dy > 0) { int pastVisibleItems = 0, visibleItemCount, totalItemCount; RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); visibleItemCount = layoutManager.getChildCount(); totalItemCount = layoutManager.getItemCount(); // Already covers the GridLayoutManager case if (layoutManager instanceof LinearLayoutManager) { pastVisibleItems = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition(); } else if (layoutManager instanceof StaggeredGridLayoutManager) { int[] positions = ((StaggeredGridLayoutManager) layoutManager).findFirstVisibleItemPositions(null); if (positions != null && positions.length > 0) pastVisibleItems = positions[0]; } if ((visibleItemCount + pastVisibleItems) >= totalItemCount) { onScrolledDown(recyclerView); } } }
public boolean canTriggerLoadMore(RecyclerView recyclerView) { View lastChild = recyclerView.getChildAt(recyclerView.getChildCount() - 1); int position = recyclerView.getChildLayoutPosition(lastChild); RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); int totalItemCount = layoutManager.getItemCount(); return totalItemCount - 1 == position; }
/** * Returns the adapter item count. * * @return The total number on items in a layout manager */ public int getItemCount() { return layoutManager == null ? 0 : layoutManager.getItemCount(); }
private boolean checkIfNeedLoadMore() { int lastVisibleItemPosition = mLayoutManager.findLastVisiblePosition(); int totalCount = mLayoutManager.getLayoutManager().getItemCount(); return totalCount - lastVisibleItemPosition < 5; }
@Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); currentScrollState = newState; RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); int visibleItemCount = layoutManager.getChildCount(); int totalItemCount = layoutManager.getItemCount(); if ((visibleItemCount > 0 && currentScrollState == RecyclerView.SCROLL_STATE_IDLE && (lastVisibleItemPosition) >= totalItemCount - minPositionToEndless)) { onLoadMore(recyclerView); } }
public static boolean isRecyclerViewToBottom(RecyclerView recyclerView) { if (recyclerView != null) { RecyclerView.LayoutManager manager = recyclerView.getLayoutManager(); if (manager == null || manager.getItemCount() == 0) { return false;
return true; if (manager.getItemCount() == 0) { return true;
mTotalItemCount = layoutManager.getItemCount(); switch (layoutManagerType) { case LINEAR:
@Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); int[] lastVisibleItemPosition = ((StaggeredGridLayoutManager) layoutManager) .findLastVisibleItemPositions(null); int visibleItemCount = layoutManager.getChildCount(); int totalItemCount = layoutManager.getItemCount(); if (!mIsAllLoaded && visibleItemCount > 0 && (newState == RecyclerView.SCROLL_STATE_IDLE) && ((lastVisibleItemPosition[0] >= totalItemCount - 1) || (lastVisibleItemPosition[1] >= totalItemCount - 1))) { mPhotoPresenter.loadMore(); mPhotoListAdapter.showFooter(); mPhotoRv.scrollToPosition(mPhotoListAdapter.getItemCount() - 1); } }
@Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); currentScrollState = newState; RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); int visibleItemCount = layoutManager.getChildCount(); int totalItemCount = layoutManager.getItemCount(); if (visibleItemCount != 0) { int bottomOffset = (totalItemCount - lastVisibleItemPosition - 1) * (recyclerView.getHeight()) / visibleItemCount; if (visibleItemCount > 0 && currentScrollState == RecyclerView.SCROLL_STATE_IDLE) { if (listener != null && listener.get() != null) { listener.get().onLoadMore(bottomOffset); } } } }
@Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); LayoutManager layoutManager = recyclerView.getLayoutManager(); int lastVisibleItemPosition = ((LinearLayoutManager) layoutManager) .findLastVisibleItemPosition(); int visibleItemCount = layoutManager.getChildCount(); int totalItemCount = layoutManager.getItemCount(); if (!mIsAllLoaded && visibleItemCount > 0 && newState == RecyclerView.SCROLL_STATE_IDLE && lastVisibleItemPosition >= totalItemCount - 1) { mNewsListPresenter.loadMore(); mNewsListAdapter.showFooter(); mNewsRV.scrollToPosition(mNewsListAdapter.getItemCount() - 1); } }
@Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); currentScrollState = newState; RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); int visibleItemCount = layoutManager.getChildCount(); int totalItemCount = layoutManager.getItemCount(); if ((visibleItemCount > 0 && currentScrollState == RecyclerView.SCROLL_STATE_IDLE && (lastVisibleItemPosition) >= totalItemCount - 1)) { onLoadNextPage(recyclerView); } }
int totalItemCount = layoutManager.getItemCount(); if (visibleItemCount > 0 && lastVisibleItemPosition >= totalItemCount - 1
int totalItemCount = layoutManager.getItemCount(); if (visibleItemCount > 0 && lastVisibleItemPosition >= totalItemCount - 1
private View findStartView(RecyclerView.LayoutManager layoutManager, OrientationHelper helper) { /** * 0,1,2,3 4,5,6,7 8,9,10,11 */ if (layoutManager instanceof LinearLayoutManager) { //找出第一个可见的ItemView的位置 int firstChildPosition = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition(); if (firstChildPosition == RecyclerView.NO_POSITION) { return null; } //找到最后一个完全显示的ItemView,如果该ItemView是列表中的最后一个 //就说明列表已经滑动最后了,这时候就不应该根据第一个ItemView来对齐了 //要不然由于需要跟第一个ItemView对齐最后一个ItemView可能就一直无法完全显示, //所以这时候直接返回null表示不需要对齐 if (((LinearLayoutManager) layoutManager).findLastCompletelyVisibleItemPosition() == layoutManager.getItemCount() - 1) { return null; } View firstChildView = layoutManager.findViewByPosition(firstChildPosition); //如果第一个ItemView被遮住的长度没有超过一半,就取该ItemView作为snapView //超过一半,就把下一个ItemView作为snapView if (helper.getDecoratedEnd(firstChildView) >= helper.getDecoratedMeasurement(firstChildView) / 2 && helper.getDecoratedEnd(firstChildView) > 0) { return firstChildView; } else { return layoutManager.findViewByPosition(firstChildPosition + 1); } } else { return null; } }
@Override public int findTargetSnapPosition(RecyclerView.LayoutManager lm, int velocityX, int velocityY) { final int itemCount = lm.getItemCount(); if (itemCount == 0) { return RecyclerView.NO_POSITION; } final int childCount = lm.getChildCount(); if (childCount == 0) { return RecyclerView.NO_POSITION; } final boolean leftDirection = velocityX > 0; if (leftDirection) { final View leftChild = lm.getChildAt(0); final int leftChildPos = lm.getPosition(leftChild); final int leftChildRight = lm.getDecoratedRight(leftChild); return Math.min(itemCount - 1, leftChildPos + (leftChildRight > 0 ? 1 : 2)); } else { final View rightChild = lm.getChildAt(childCount - 1); final int rightChildPos = lm.getPosition(rightChild); return Math.max(0, rightChildPos - 1); } }
@Override public int findTargetSnapPosition(LayoutManager layoutManager, int velocityX, int velocityY) { final int itemCount = layoutManager.getItemCount(); if (itemCount == 0) { return RecyclerView.NO_POSITION;
public RecyclerViewLayoutManagerAssert hasItemCount(int count) { isNotNull(); int actualCount = actual.getItemCount(); assertThat(actualCount) // .overridingErrorMessage("Expected item count <%s> but was <%s>.", count, actualCount) // .isEqualTo(count); return this; }