想要定义RecyclerView多种item类型头部底部,就要重写RecyclerView.Adapter
getItemViewType 方法 RecyclerView.Adapter 代码简单明了 话不多说先看效果再看代码
1.RecyclerView 添加不同item的方法 就是在getItemViewType定义不同类型
@Override
public int getItemViewType(int position) {
if (position == 0) {
return IS_HEADER;
} else if (position == data.size() + 1) {
return IS_FOOTER;
} else {
return IS_NORMAL;
}
}
2.显示不同类型的item View,以及解决RecyclerView在XML 中设置MATCH_PARENT无效
@Override
public ListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == IS_NORMAL) {
View view = View.inflate(mContext, R.layout.home_fragment_item, null);
//要从代码中手动动给出MATCH_PARENT
view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
return new ListViewHolder(view, IS_NORMAL);
} else if (viewType == IS_HEADER) {
View view = View.inflate(mContext, R.layout.home_fragment_header, null);
view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
return new ListViewHolder(view, IS_HEADER);
} else if (viewType == IS_FOOTER) {
View view = View.inflate(mContext, R.layout.home_fragment_footer, null);
view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
return new ListViewHolder(view, IS_FOOTER);
}
return null;
}
源码 下载地址http://download.csdn.net/detail/qq_31902733/9566636