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

时间:2021-01-20 19:31:12

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