安卓原生RecyclerView实现下拉刷新和加载更多

1、自定义recyclerview滑动监听类RecyclerViewScrollListener

    代码:

     /**

       * 自定义recyclerview滑动监听

       */

public class RecyclerViewScrollListener extends RecyclerView.OnScrollListener {

    //监听回调

    private PullOnScrollListener listener;

    public RecyclerViewScrollListener(PullOnScrollListener listener) {

        this.listener = listener;

    }

    boolean isUpScroll = false; //是否正在上滑标记

    @Override

    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {

        super.onScrollStateChanged(recyclerView, newState);

        LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();

        if (newState == RecyclerView.SCROLL_STATE_IDLE) { //当前未滑动

            int itemCount = manager.getItemCount(); //总数

            int lastItemPosition = manager.findLastCompletelyVisibleItemPosition();//最后显示的位置

            if (lastItemPosition == (itemCount - 1) && isUpScroll) {

                listener.onLoadMore();

            }

            int fristItemPosition = manager.findFirstCompletelyVisibleItemPosition();//第一个显示的位置

            if (fristItemPosition == (0) && !isUpScroll){

                listener.onRefresh();

            }

        }

    }

    @Override

    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

        super.onScrolled(recyclerView, dx, dy);

        // 大于0表示正在向上滑动,小于等于0表示停止或向下滑动

        isUpScroll = dy > 0;

    }

    public interface PullOnScrollListener {

    //上拉加载更多的方法

        public  void onLoadMore() ;

//下拉刷新的方法

        public  void onRefresh() ;

    }

}

2、在activity和fragment中实现方式

给xml中的RecyclerView控件添加自定义监听实现

代码实现:

binding.recyclerView.addOnScrollListener(new RecyclerViewOnScrollListener(onScrollListener));

private RecyclerViewOnScrollListener.PullOnScrollListeneronScrollListener =new RecyclerViewOnScrollListener.PullOnScrollListener() {

    @Override

    public void onLoadMore() { 

      //上拉处理逻辑

    }

    @Override

    public void onRefresh() { 
 //下拉刷新

    }

};

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容