众所周知,现在recycleview也已经退出好久了。各种封装库也出现好多了。这里推荐下hongyang大神的。
http://blog.csdn.net/lmj623565791/article/details/51854533
使用过listview的都知道,就是根据不同的viewtype 加载不同的xml布局。接下来实现。
//这里注意 泛型的类型
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final Context context;
private static final int ITEM_COUNT = 10;//这里模拟10个item布局
private static final int TYPE_HEADER = 0;//header头部
private static final int TYPE_ITEM = 1;//item布局
private static final int TYPE_FOOTER = 2;//根布局
public RecyclerViewAdapter(Context context) {
this.context = context;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_HEADER) {
return new HeaderHolder(LayoutInflater.from(context).inflate(R.layout.recyclerview_header, parent, false));
} else if (viewType == TYPE_FOOTER) {
return new FooterHolder(LayoutInflater.from(context).inflate(R.layout.recycle_footer, parent, false));
} else {
return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.recyclerview_item, parent, false));
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//这里没使用数据
}
@Override
public int getItemCount() {
return ITEM_COUNT;
}
/**
* recycleview增加header什么的感觉确实比listview方便了好多
*
* @param position
* @return
*/
@Override
public int getItemViewType(int position) {
if (position == 0) {
//第一个加载headerview
return TYPE_HEADER;
} else if (position == 9) {
// 最后一个加载footerview
return TYPE_FOOTER;
} else {
return TYPE_ITEM;
}
}
/**
* item的viewholder
*/
public class ViewHolder extends RecyclerView.ViewHolder {
//TextView tv1;
//TextView tv2;
public ViewHolder(View itemView) {
super(itemView);
// tv1 = (TextView) itemView.findViewById(R.id.tv1_item);
// tv2 = (TextView) itemView.findViewById(R.id.tv2_item);
}
}
/**
* 头部viewholder
*/
private class HeaderHolder extends RecyclerView.ViewHolder {
//TextView tvHeader;
public HeaderHolder(View itemView) {
super(itemView);
//tvHeader = (TextView) itemView.findViewById(R.id.tv_header);
}
}
/**
* 根部viewholder
*/
private class FooterHolder extends RecyclerView.ViewHolder {
public FooterHolder(View itemView) {
super(itemView);
}
}
}
三个布局就不添加了。很简单。