RecyclerView经常使用方法总结

RecyclerView经常使用方法总结

一、获取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);
复制代码

效果以下:

相关文章
相关标签/搜索