记录RecyclerView滚动位置并恢复

来源:互联网 发布:环保部网络举报平台 编辑:程序博客网 时间:2024/06/05 17:05
//监听RecyclerView滚动状态mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {    @Override    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {        super.onScrollStateChanged(recyclerView, newState);        if(recyclerView.getLayoutManager() != null) {            getPositionAndOffset();        }    }});/** * 记录RecyclerView当前位置 */private void getPositionAndOffset() {    LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();    //获取可视的第一个view    View topView = layoutManager.getChildAt(0);    if(topView != null) {        //获取与该view的顶部的偏移量        lastOffset = topView.getTop();        //得到该View的数组位置        lastPosition = layoutManager.getPosition(topView);    }}/** * 让RecyclerView滚动到指定位置 */private void scrollToPosition() {    if(mRecyclerView.getLayoutManager() != null && lastPosition >= 0) {        ((LinearLayoutManager) mRecyclerView.getLayoutManager()).scrollToPositionWithOffset(lastPosition, lastOffset);    }}
1 0
原创粉丝点击