RecycleView添加头部布局其实就是通过Adapter中的Position来分辨的,当position为0时膨胀头布局,其他position返回常规布局:
public static final int TYPE_FIRSTHEADVIEW = 0;//第一个头布局 public static final int TYPE_SECHEADVIEW = 1; //第二个头布局 public static final int TYPE_NORMALVIEW = 2; //RecycleView布局
@Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_FIRSTHEADVIEW) { //第一个头布局View View view = mLayoutInflater.inflate(R.layout.recycle_firstheadview, parent, false); return new HeaderViewHolder(view); } else if (viewType == TYPE_SECHEADVIEW) { //第二个头布局 View view2 = mLayoutInflater.inflate(R.layout.recycle_secheadview, parent, false); //intSecRecycleData(view2); return new SecViewHolder(view2); } View view3 = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_normalview, parent, false); VideoViewHolder vh = new VideoViewHolder(view3); return vh; }@Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { //第一个头布局 if (isHeader(position)) { //相应数据绑定操作 return; //第二个头布局 } else if (isSec(position)) { //相应数据绑定 return; } //常规布局数据操作//由于添加了两个头布局,在做数据绑定的时候要position-2才是第一个数据源对应的item } private boolean isSec(int position) { return position == 1; } public boolean isHeader(int position) { return position == 0; }
RecycleView adapter添加监听器
public interface MyOnItemClickListener { void OnItemClick(View view, int position, int prentPosition, int viewid); } public void setOnItemClickListener(MyOnItemClickListener mOnItemClickListener) { this.mOnItemClickListener = mOnItemClickListener; } private MyOnItemClickListener onItemClickListener = new MyOnItemClickListener() { @Override public void OnItemClick(View view, int position, int prentPosition, int viewid) { } };