一、获取recyclerView内容高度bash
// 获取recyclerView内容高度
int recyclerViewRealHeight = recyclerView.computeVerticalScrollRange();
复制代码
咱们经过recyclerView.getHeight方法获取到的高度是RecyclerView控件的高度,不是内容高度动画
二、获取adapter中的item总个数spa
int size = recyclerView.getAdapter().getItemCount();
复制代码
三、获取recyclerView可见的item数量code
int childCount = recyclerView.getChildCount();
复制代码
四、获取某个Item的实际positioncdn
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
//获取其在adapter中的位置
int position = params.getViewLayoutPosition();
复制代码
// 这个方式也能够
int position = recyclerView.getChildAdapterPosition(view);
复制代码
五、根据position获取对应的Item的View,须要注意的是,若是当前position对应的View不可见,获取到的View为null。blog
// llm为对应的LayoutManager
View itemView = llm.findViewByPosition(position);
复制代码
六、获取第一个可见的Item的positionget
int firstPosition = ((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
复制代码
// 这样也能够获取到
View childFirst = recyclerView.getChildAt(0);
RecyclerView.LayoutParams paramsFirst = (RecyclerView.LayoutParams) childFirst.getLayoutParams();
int firstPosition1 = paramsFirst.getViewLayoutPosition();
复制代码
七、获取第一个彻底可见的Item的positionit
int firstCompletelyVisibleItemPosition = ((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPosition();
复制代码
八、获取最后一个可见的Item的positionio
int lastPosition = ((LinearLayoutManager)recyclerView.getLayoutManager()).findLastVisibleItemPosition();
复制代码
// 这样也能够获取到
int childCount = recyclerView.getChildCount();
View childLast = recyclerView.getChildAt(childCount - 1);
RecyclerView.LayoutParams paramsLast = (RecyclerView.LayoutParams) childLast.getLayoutParams();
int lastPosition1 = paramsLast.getViewLayoutPosition();
复制代码
九、获取最后一个彻底可见的Item的positionast
int lastCompletelyVisibleItemPosition = ((LinearLayoutManager)parent.getLayoutManager()).findLastCompletelyVisibleItemPosition();
复制代码
十、将某个位置的Item滑动到顶部
第一种方式,有平滑动画的:
// 会有滚动效果,平滑动画,适用于列表数量很少的情景
recyclerView.smoothScrollToPosition(0);
复制代码
效果以下:
第二种方式,无动画的:
// 无滚动效果,不平滑。
linearLayoutManager.scrollToPositionWithOffset(0,0);
复制代码
效果以下: