方法一友绝,直接使用當(dāng)前的manager
????/* RecyclerView 移動(dòng)到當(dāng)前位置
? ? * @param manager? 設(shè)置RecyclerView對(duì)應(yīng)的manager
? ? * @param n? 要跳轉(zhuǎn)的位置 */? ??
????????public static void MoveToPosition(LinearLayoutManager manager, int n) {
? ? ? ????????????????? manager.scrollToPositionWithOffset(n, 0);
? ? ? ????????????????? manager.setStackFromEnd(true);
? ? ? ? ? ?}
方法二郁竟、根據(jù)當(dāng)前RecyclerView的條目數(shù)量挪丢,這個(gè)相對(duì)復(fù)雜一些出革,但是可以有效地避免指針越界
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);
? ? }
}