一、獲取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);
複製代碼
效果以下: