RecyclerView滑动

介绍

  • 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);

猜你喜欢

转载自blog.csdn.net/zsp_android_com/article/details/80848204