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);
複製代碼

效果以下:

相關文章
相關標籤/搜索