给RecyclerView添加头布局和底部布局(参考了网络代码)

来源:互联网 发布:淘宝的钻石和皇冠 编辑:程序博客网 时间:2024/05/17 08:31
package com.ennew.ui.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.ennew.R;import java.util.ArrayList;import java.util.List;/** * 新增、填写询价单 * Created by tianhongyan on 2017/6/21. */public class EnquiryCompareAddAdapter extends RecyclerView.Adapter<EnquiryCompareAddAdapter.MyHolder> {    private RecyclerView mRecyclerView;    private List<String> data = new ArrayList<>();    private Context mContext;    private View VIEW_FOOTER;    private View VIEW_HEADER;    private int TYPE_NORMAL = 1000;    private int TYPE_HEADER = 1001;    private int TYPE_FOOTER = 1002;    public EnquiryCompareAddAdapter(Context mContext) {        initData();        this.mContext = mContext;    }    @Override    public int getItemViewType(int position) {        if (isHeaderView(position)) {            return TYPE_HEADER;        } else if (isFooterView(position)) {            return TYPE_FOOTER;        } else {            return TYPE_NORMAL;        }    }    @Override    public EnquiryCompareAddAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if (viewType == TYPE_FOOTER) {            return new MyHolder(VIEW_FOOTER);        } else if (viewType == TYPE_HEADER) {            return new MyHolder(VIEW_HEADER);        } else {            return new MyHolder(getLayout(R.layout.item_enquiry_compare_add));        }    }    @Override    public void onBindViewHolder(MyHolder holder, int position) {        if (!isHeaderView(position) && !isFooterView(position)) {            if (haveHeaderView()){                position--;            }            TextView content = (TextView) holder.itemView.findViewById(R.id.tv_good_name);            content.setText(data.get(position));        }    }    @Override    public int getItemCount() {        int count = (data == null ? 0 : data.size());        if (VIEW_FOOTER != null) {            count++;        }        if (VIEW_HEADER != null) {            count++;        }        return count;    }    @Override    public void onAttachedToRecyclerView(RecyclerView recyclerView) {        try {            if (mRecyclerView == null && mRecyclerView != recyclerView) {                mRecyclerView = recyclerView;            }        } catch (Exception e) {            e.printStackTrace();        }    }    private View getLayout(int layoutId) {        return LayoutInflater.from(mContext).inflate(layoutId, null);    }    public void addHeaderView(View headerView) {        if (haveHeaderView()) {            throw new IllegalStateException("hearview has already exists!");        } else {            ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);            headerView.setLayoutParams(params);            VIEW_HEADER = headerView;            notifyItemInserted(0);        }    }    public void addFooterView(View footerView) {        if (haveFooterView()) {            throw new IllegalStateException("footerView has already exists!");        } else {            ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);            footerView.setLayoutParams(params);            VIEW_FOOTER = footerView;            notifyItemInserted(getItemCount() - 1);        }    }    private boolean haveHeaderView() {        return VIEW_HEADER != null;    }    public boolean haveFooterView() {        return VIEW_FOOTER != null;    }    private boolean isHeaderView(int position) {        return haveHeaderView() && position == 0;    }    private boolean isFooterView(int position) {        return haveFooterView() && position == getItemCount() - 1;    }    public static class MyHolder extends RecyclerView.ViewHolder {        public MyHolder(View itemView) {            super(itemView);        }    }    void initData(){        for(int i=0;i<50;i++){            data.add("index "+i);        }    }}

原创粉丝点击