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) { } };