Android RecyclerView:设置指定位置的两种方法


方法一,直接使用当前的manager

    /* RecyclerView 移动到当前位置

    * @param manager  设置RecyclerView对应的manager

    * @param n  要跳转的位置 */    

        public static void MoveToPosition(LinearLayoutManager manager, int n) {

                        manager.scrollToPositionWithOffset(n, 0);

                        manager.setStackFromEnd(true);

           }

方法二、根据当前RecyclerView的条目数量,这个相对复杂一些,但是可以有效地避免指针越界

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);

    }

}

你可能感兴趣的:(Android RecyclerView:设置指定位置的两种方法)