Android开发笔记(二十六)底部加载更多

用viewType的方法做区分

    1. 制作加载条layout,改progressbar颜色如下,需要API21以上


    1. adpater重写区分viewtype
    static final int VIEW_TIPE_NORMAL = 0;
    static final int VIEW_TIPE_BOTTOM = 1;
    @Override
    public int getItemCount() {
        return super.getItemCount() + 1;
    }

    @Override
    public int getItemViewType(int position) {
        return position == getItemCount() - 1 ? VIEW_TIPE_BOTTOM : VIEW_TIPE_NORMAL;
    }
  • 3 adpater中修改onCreateViewHolder
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull final ViewGroup parent, int viewType) {
        final MyViewHolder myViewHolder;
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        if (viewType == VIEW_TIPE_NORMAL){
            // 原来的myViewHolder创建方法
        }else {
            final View itemView = inflater.inflate(R.layout.footer, parent, false);
            myViewHolder = new MyViewHolder(itemView);
        }
        return myViewHolder;
    }
  • 4 onBindViewHolder添加:
    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {
        if (getItemCount() - 1 == position) {
            return;
        }
}
    1. 监听加载:(还有很多相似方法,这里就列举一个)
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }

            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                if (dy < 0 ){return;}
                GridLayoutManager layoutManager = (GridLayoutManager) recyclerView.getLayoutManager();
                int p = layoutManager.findLastVisibleItemPosition();
                if (p == myAdapter.getItemCount() - 1){
                    Log.i("test","到底了");
                  //加载功能性代码
                }
            }
        });

加载记得做判断防止多次连续请求

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