1. 关于几个滑动的方法:
scrollToPosition: 就近原则,跳转的方式,使其完全显示在屏幕中。若已经完全在屏幕中,则不会改变;
smoothScrollToPosition: 就近原则,滑动的方式,使其完全显示在屏幕中。若已经完全在屏幕中,则不会改变;
scrollToPositionWithOffset: 跳转到屏幕顶部,成为第一个可见的view,参数中带有偏移量,代表和顶部的距离
smoothScrollBy: 滑动到指定坐标的位置。
就近原则是指如果view有部分隐藏在屏幕顶部,则向下滑动使其全部显示,成为第一个可见view。如果有部分隐藏到屏幕底部,则向上滑动使其全部显示,成为最后一个可见view
2. getChildAt(int position)方法返回空:
该方法源码如下:
public View getChildAt(int index) {
if (index < 0 || index >= mChildrenCount) {
return null;
}
return mChildren[index];
}
该方法返回的view,其实是在屏幕中的view,并不能返回RecyclerView中的所有子View。所以,如果position的值,大于屏幕中可显示的item总数,则会返回空。
解决方法:改变position的取值,减去第一个可见view的位置。即
position = position - firstVisiblePosition
此时getChildAt()便不会返回空了。