zoukankan      html  css  js  c++  java
  • RecyclerView添加Hearder

    Activity中添加如下代码

         mAdapter = new MyQcBankAdapter(this);
            mRecyclerView.setAdapter(mAdapter);
            final GridLayoutManager manager = new GridLayoutManager(this, 2);
    
            //为RecyclerView添加头部layout
            View header = LayoutInflater.from(this).inflate(R.layout.qcbank_mybank_list_header, mRecyclerView, false);
            //修改头部layout为通栏,修改单元格所占列数,此处将两个单元格合并为一个单元格
            manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
                @Override
                public int getSpanSize(int position) {
                    return mAdapter.isHeader(position) ? manager.getSpanCount() : 1;
                }
            });
            mAdapter.setHeaderView(header);
            mRecyclerView.setLayoutManager(manager);
    首先我们设置了一个SpanSizeLookup,这个类是一个抽象类,而且仅有一个抽象方法getSpanSize,这个方法的返回值决定了我们每个position上的item占据的单元格个数

    在RecycleView中添加如下代码

    public static final int TYPE_HEADER = 0;
    public static final int TYPE_NORMAL = 1;
    private View mHeaderView;
    
       @Override
        public int getItemViewType(int position) {
            if (position == 0){
                //第一个item应该加载Header
                return TYPE_HEADER;
            }
            return TYPE_NORMAL;
        }
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            if (mHeaderView != null && viewType == TYPE_HEADER) {
                return new ViewHolder(mHeaderView);
            }
            View v = LayoutInflater.from(mContext)
                    .inflate(
                            R.layout.qcbank_mybank_item,
                            parent,
                            false);
            return new ViewHolder(v);
        }
    
        public boolean isHeader(int position) {
            return position == 0;
        }
    
        public View getHeaderView() {
            return mHeaderView;
        }
    
        public void setHeaderView(View headerView) {
            mHeaderView = headerView;
            notifyItemInserted(0);
        }
    
        //在这里面加载ListView中的每个item的布局
        class ViewHolder extends RecyclerView.ViewHolder {
            ViewHolder(View v) {
                super(v);
            }
        }
         
        
        @Override
        public int getItemCount() {
            return mHeaderView == null ? mDatas.size() : mDatas.size() + 1;
        }
  • 相关阅读:
    C# WebApi 获取客户端ip地址
    C# 构造函数快捷键
    2 .SHELL 5~10节
    Spring项目集成apidoc生成api接口文档
    根据域名查找对应的ip及端口
    高质量SQL的30条建议
    1 .shell编程1~5
    CentOS7安装mysql8
    编译安Apache2.4.43报错checking for APR... no configure: error: APR not found. Please read the documentation.
    rm -rf * 的正确用法
  • 原文地址:https://www.cnblogs.com/HJbk/p/8717390.html
Copyright © 2011-2022 走看看