类属性recyclerViewlistView,RecyclerView

RecyclerView横向滑动监听,判断是否滑动到了最后一个I

2016-10-17  本文已影响6577人  容华谢后
封面

项目中的需求,RecyclerView横向滑动列表,要有加载更多的功能,给RecyclerView设置一个滑动监听,在onScrolled方法中判断一下滑动方向,然后在onScrollStateChanged方法中判断一下是否滑动到了最后一个item即可,代码中已经写了详细的注释:

public abstract class EndlessRecyclerOnScrollListener extends RecyclerView.OnScrollListener {

    // 用来标记是否正在向左滑动
    private boolean isSlidingToLeft = false;

    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();
        // 当不滑动时
        if (newState == RecyclerView.SCROLL_STATE_IDLE) {
            // 获取最后一个完全显示的itemPosition
            int lastItemPosition = manager.findLastCompletelyVisibleItemPosition();
            int itemCount = manager.getItemCount();

            // 判断是否滑动到了最后一个item,并且是向左滑动
            if (lastItemPosition == (itemCount - 1) && isSlidingToLeft) {
                // 加载更多
                onLoadMore();
            }
        }
    }

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        // dx值大于0表示正在向左滑动,小于或等于0表示向右滑动或停止
        isSlidingToLeft = dx > 0;
    }

    /**
     * 加载更多回调
     */
    public abstract void onLoadMore();
}

看下如何使用:

// 设置加载更多监听
recyclerView.addOnScrollListener(new EndlessRecyclerOnScrollListener() {
    @Override
    public void onLoadMore() {
        // 加载更多
    }
});
上一篇 下一篇

猜你喜欢

热点阅读