RecyclerView返回顶部

懒得说明了,直接上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public static void scrollToTop(RecyclerView recyclerView) {
if (null == recyclerView ||
recyclerView.getChildCount() <= 1 ||
null == recyclerView.getLayoutManager()) {
return;
}
int firstVisiblePosition = 0;
int lastVisiblePosition = 0;
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
if (layoutManager instanceof LinearLayoutManager) {
LinearLayoutManager manager = (LinearLayoutManager) layoutManager;
manager.getItemCount();
firstVisiblePosition = manager.findFirstVisibleItemPosition();
lastVisiblePosition = manager.findLastVisibleItemPosition();
} else if (layoutManager instanceof GridLayoutManager) {
GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
firstVisiblePosition = gridLayoutManager.findFirstVisibleItemPosition();
lastVisiblePosition = gridLayoutManager.findLastVisibleItemPosition();
} else if (layoutManager instanceof StaggeredGridLayoutManager) {
StaggeredGridLayoutManager staggeredGridLayoutManager = (StaggeredGridLayoutManager) layoutManager;
firstVisiblePosition = staggeredGridLayoutManager.findFirstVisibleItemPositions(null)[0];
lastVisiblePosition = staggeredGridLayoutManager.findLastVisibleItemPositions(null)[0];
}
int visibleCount = lastVisiblePosition - firstVisiblePosition + 1;
if (firstVisiblePosition > visibleCount) {
recyclerView.scrollToPosition(visibleCount);
}
recyclerView.smoothScrollToPosition(0);
}