RecyclerView跳转到指定位置的两种方式

来源:互联网 发布:php开发好学吗 编辑:程序博客网 时间:2024/05/16 07:48

自从android5.0推出RecyclerView以后,RecyclerView越来越受广大程序员的热爱了!大家都知道RecyclerView的出现目的是为了替代listview和ScrollView在列表方面的使用!那么listview和ScrollView的所有功能和方法都应该有的!

但是RecyclerView的很多方法,不是封装在RecyclerView中的,当我们在RecyclerView中找不到对应的方法时,就应该想到他的管理类manager了!
大多方法都封装在此啊!

最近有个同学用到了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的条目数量,这个相对复杂一些,但是可以有效地避免指针越界呦..

/** * 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);    }}

好了这样就可以了,不信你试试…….

4 0
原创粉丝点击