介绍
- scrollToPosition
不在屏幕Item移至屏幕,原上方Item移至可见头项,原下方移至屏幕可见末项。已显Item不移。 - scrollToPositionWithOffset
Item移至可见头项(即使已于可见Item中)。参数offset表Item移至头项后同RecyclerView上或下边间距(默0)。
一
布局管理器实现
((LinearLayoutManager) rvParaConfigComplexType.getLayoutManager()).scrollToPositionWithOffset(position, 0);
((LinearLayoutManager) rvParaConfigComplexType.getLayoutManager()).setStackFromEnd(true);
complexTypeList.add(position, complexType);
paraConfigChooseComplexTypeAdapter.notifyItemInserted(position);
paraConfigChooseComplexTypeAdapter.notifyItemRangeChanged(position, complexTypeList.size() - position);
二
据当前RecyclerView条数(有效避指针越界)
package util;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
/**
* Created on 2018/6/28.
*
* @desc RecyclerViewScroll
*/
public class RecyclerViewScroll {
/**
* 滑至某位
*
* @param manager 布局管理器
* @param mRecyclerView recyclerView
* @param n 位
*/
public static void ScrollToPosition(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);
}
}
}
RecyclerViewScroll.ScrollToPosition(((LinearLayoutManager) rvParaConfigComplexType.getLayoutManager()), rvParaConfigComplexType, 0);