RecyclerView中实现addHeaderView,addFooterView功能
2015-03-06 16:09
423 查看
RecyclerView作为ListView的替代者有着较好的性能提升,但是有些ListVIew的常用功能却没有提供比如addHeaderView,addFooterView;
作为替代方案,可以通过自定义的Adapter来实现addHeaderView,addFooterView功能,代码如下:
public class HeaderAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int TYPE_HEADER = 0;
private static final int TYPE_ITEM = 1;
String[] data;
public HeaderAdapter(String[] data) {
this.data = data;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_ITEM) {
//inflate your layout and pass it to view holder
return new VHItem(null);
} else if (viewType == TYPE_HEADER) {
//inflate your layout and pass it to view holder
return new VHHeader(null);
}
throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly");
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof VHItem) {
String dataItem = getItem(position);
//cast holder to VHItem and set data
} else if (holder instanceof VHHeader) {
//cast holder to VHHeader and set data for header.
}
}
@Override
public int getItemCount() {
return data.length + 1;
}
@Override
public int getItemViewType(int position) {
if (isPositionHeader(position))
return TYPE_HEADER;
return TYPE_ITEM;
}
private boolean isPositionHeader(int position) {
return position == 0;
}
private String getItem(int position) {
return data[position - 1];
}
class VHItem extends RecyclerView.ViewHolder {
TextView title;
public VHItem(View itemView) {
super(itemView);
}
}
class VHHeader extends RecyclerView.ViewHolder {
Button button;
public VHHeader(View itemView) {
super(itemView);
}
}
}
作为替代方案,可以通过自定义的Adapter来实现addHeaderView,addFooterView功能,代码如下:
public class HeaderAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int TYPE_HEADER = 0;
private static final int TYPE_ITEM = 1;
String[] data;
public HeaderAdapter(String[] data) {
this.data = data;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_ITEM) {
//inflate your layout and pass it to view holder
return new VHItem(null);
} else if (viewType == TYPE_HEADER) {
//inflate your layout and pass it to view holder
return new VHHeader(null);
}
throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly");
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof VHItem) {
String dataItem = getItem(position);
//cast holder to VHItem and set data
} else if (holder instanceof VHHeader) {
//cast holder to VHHeader and set data for header.
}
}
@Override
public int getItemCount() {
return data.length + 1;
}
@Override
public int getItemViewType(int position) {
if (isPositionHeader(position))
return TYPE_HEADER;
return TYPE_ITEM;
}
private boolean isPositionHeader(int position) {
return position == 0;
}
private String getItem(int position) {
return data[position - 1];
}
class VHItem extends RecyclerView.ViewHolder {
TextView title;
public VHItem(View itemView) {
super(itemView);
}
}
class VHHeader extends RecyclerView.ViewHolder {
Button button;
public VHHeader(View itemView) {
super(itemView);
}
}
}
相关文章推荐
- 支持addHeaderView、 addFooterView、分页加载数据的RecyclerView
- 支持addHeaderView、 addFooterView、分页加载数据的RecyclerView
- RecyclerView之ViewHolder封装实现点击、长按、headerView和多选功能
- 实现带header和footer功能的RecyclerView
- 实现带header和footer功能的RecyclerView——完善篇
- 装饰设计模式--实现RecyclerView的addHeaderView()方法
- XRecyclerView:实现下拉刷新、滚动到底部加载更多以及添加header功能的RecyclerView
- RecyclerView中实现headerView,footerView功能
- RecyclerView之ViewHolder封装实现点击、长按、headerView和多选功能
- android listview addHeaderView和addFooterView
- 问题解决:listview多次调用addHeaderView和addFooterView
- Android Listview多次调用addHeaderView和addFooterView
- 问题解决:listview多次调用addHeaderView和addFooterView
- Android listview addHeaderView和addFooterView详解
- android listview addHeaderView和addFooterView的注意事项
- Android listview addHeaderView 和 addFooterView 详解
- android listview addHeaderView和addFooterView的注意事项【转】
- 问题解决:listview多次调用addHeaderView和addFooterView
- android listview addHeaderView和addFooterView的注意事项
- Android listview addHeaderView和addFooterView详解