最近会更新一些关于recycleview的使用教程哦。
第一篇,给recycleview添加header,footer,emptyview。
最近有开发一个列表,这个列表需要添加header和footer的功能。记录一下,避免每次开发都去查找相关代码。
代码示例:
(1)adapter:
public class MessageCenterAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<MessageCenterBean> mDatas;
private Context mContext;
private View mHeaderView;
private View mFooterView;
private View mEmptyView;
private static final int sITEM_TYPE_NORMAL = 0;
private static final int sITEM_TYPE_HEADER = 1;
private static final int sITEM_TYPE_FOOTER = 2;
private static final int sITEM_TYPE_EMPTY = 3;
private final LayoutInflater mIinflater;
public MessageCenterAdapter(Context context, OnMsgClickListener onMsgClickListener) {
mContext = context;
this.onMsgClickListener = onMsgClickListener;
mDatas = new ArrayList<>();
mIinflater = LayoutInflater.from(mContext);
}
// 创建视图
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == sITEM_TYPE_HEADER) {
return new HeaderViewHolder(mHeaderView);
} else if (viewType == sITEM_TYPE_EMPTY) {
return new EmptyViewHolder(mEmptyView);
} else if (viewType == sITEM_TYPE_FOOTER) {
return new FooterViewHolder(mFooterView);
} else {
View contentView = mIinflater.inflate(R.layout.item_message_center, parent, false);
return new ContentViewHolder(contentView);
}
}
@Override
public int getItemViewType(int position) {
if (null != mHeaderView && position == 0) {
return sITEM_TYPE_HEADER;
}
if (null != mFooterView && position == getItemCount() - 1) {
return sITEM_TYPE_FOOTER;
}
if (null != mEmptyView && mDatas.size() == 0) {
return sITEM_TYPE_EMPTY;
}
return sITEM_TYPE_NORMAL;
}