Android RecyclerView:設定指定位置的兩種方法
阿新 • • 發佈:2019-01-26
方法一,直接使用當前的manager
/* RecyclerView 移動到當前位置,
*
* @param manager 設定RecyclerView對應的manager
* @param n 要跳轉的位置
*/
public static void MoveToPosition(LinearLayoutManager manager, int n) {
manager.scrollToPositionWithOffset(n, 0);
manager.setStackFromEnd(true);
}
方法二、根據當前RecyclerView的條目數量,這個相對複雜一些,但是可以有效地避免指標越界呦..
/**
* RecyclerView 移動到當前位置,
*
* @param manager 設定RecyclerView對應的manager
* @param mRecyclerView 當前的RecyclerView
* @param n 要跳轉的位置
*/
public static void MoveToPosition(LinearLayoutManager manager, RecyclerView mRecyclerView, int n) {
int firstItem = manager.findFirstVisibleItemPosition();
int lastItem = manager.findLastVisibleItemPosition();
if (n <= firstItem) {
mRecyclerView.scrollToPosition(n);
} else if (n <= lastItem) {
int top = mRecyclerView.getChildAt(n - firstItem).getTop();
mRecyclerView.scrollBy(0 , top);
} else {
mRecyclerView.scrollToPosition(n);
}
}