1. 程式人生 > >RecyclerView跳轉到指定位置的兩種方式

RecyclerView跳轉到指定位置的兩種方式

轉載解決問題

自從android5.0推出RecyclerView以後,RecyclerView越來越受廣大程式設計師的熱愛了!大家都知道RecyclerView的出現目的是為了替代listview和ScrollView在列表方面的使用!那麼listview和ScrollView的所有功能和方法都應該有的!

但是RecyclerView的很多方法,不是封裝在RecyclerView中的,當我們在RecyclerView中找不到對應的方法時,就應該想到他的管理類manager了! 
大多方法都封裝在此啊!

方法一,直接使用當前的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);
    }

}