您的位置:首页 > 其它

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

2017-11-25 13:54 1116 查看
使用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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐