Recyclerview的getChildAt(position)方法获取可见第一条的view返回null;

来源:互联网 发布:身份证号码校验 js 编辑:程序博客网 时间:2024/05/16 05:05

使用Recyclerview的getChildAt(position)方法获取可见第一条的view,总是null;

使用LinearLayoutManager的findViewByPosition(position)方法解决此问题。

使用LinearLayoutManager的scrollToPositionWithOffset(position,offset)来定位到指定位置。



public void savePositionState(){        int firstVisibleItemPosition = mLinearLayoutManager.findFirstVisibleItemPosition();        mPositionState[0] = firstVisibleItemPosition;//        View view = mRecyclerView.getChildAt(firstVisibleItemPosition);        View view = mLinearLayoutManager.findViewByPosition(firstVisibleItemPosition);        if (view != null) {            int top = view.getTop();            mPositionState[1] = top;        }        DebugLog.d(TAG,"InfoStream_savePositionState mPositionState[0]:"+mPositionState[0]+" mPositionState[1]:"+mPositionState[1]);    }    public void restorePosistionState(){        DebugLog.d(TAG,"InfoStream_restorePosistionState mPositionState[0]:"+mPositionState[0]+" mPositionState[1]:"+mPositionState[1]);        mLinearLayoutManager.scrollToPositionWithOffset(mPositionState[0], mPositionState[1]);        mFirstCompletelyVisibleItemPosition = mLinearLayoutManager.findFirstCompletelyVisibleItemPosition();    }

阅读全文
0 0
原创粉丝点击