RecyclerView优雅添加HeaderView FooterView

博客介绍了如何使用SmartHeaderFooterRecyclerview库轻松添加Header和Footer视图,无需大量修改原有适配器,并支持LinearLayoutManager和GridLayoutManager,还支持动态添加和移除。
摘要由CSDN通过智能技术生成

SmartHeaderFooterRecyclerview

Easy implements Header & Footer view, With least modification

github : https://github.com/songhanghang/SmartHeaderFooterRecyclerview

feature

Easy implements Header & Footer view, With least modification

非常方便的实现Recyclerview添加HeaderView和FooterView,
* 1, No need change anyting with your target adapter

 不需要修改Target Adapter

* 2, Not destroy target adapter position

 不会破坏Target adapter中的 position (PS: 不需要 +1 -1)

* 3, Support dynamic add & remove

 支持动态添加移除

* 4, Support LinearLayoutManager & GridLayoutManager

支持 LinearLayoutManager & GridLayoutManager 两种布局管理器

screenshot

要在RecyclerView的Adapter中添加一个HeaderView,可以使用以下步骤: 1. 创建一个新的布局文件,用于表示HeaderView。 2. 创建一个新的ViewHolder类,用于表示HeaderView,并实现必要的方法。 3. 在Adapter中重写getItemViewType()方法,以便RecyclerView能够区分HeaderView和其他项。 4. 在Adapter中重写onCreateViewHolder()方法,以便根据视图类型创建正确的ViewHolder。 5. 在Adapter中重写onBindViewHolder()方法,以便为HeaderView设置数据。 下面是一个示例Adapter代码,演示如何添加HeaderView: ```java public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int VIEW_TYPE_HEADER = 0; private static final int VIEW_TYPE_ITEM = 1; private List<String> mItems; private View mHeaderView; public MyAdapter(List<String> items, View headerView) { mItems = items; mHeaderView = headerView; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { LayoutInflater inflater = LayoutInflater.from(parent.getContext()); if (viewType == VIEW_TYPE_HEADER) { return new HeaderViewHolder(mHeaderView); } else { View itemView = inflater.inflate(R.layout.item_layout, parent, false); return new ItemViewHolder(itemView); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (getItemViewType(position) == VIEW_TYPE_ITEM) { ItemViewHolder itemViewHolder = (ItemViewHolder) holder; String item = mItems.get(position - 1); // subtract 1 to account for header itemViewHolder.bind(item); } } @Override public int getItemCount() { return mItems.size() + 1; // add 1 to account for header } @Override public int getItemViewType(int position) { return position == 0 ? VIEW_TYPE_HEADER : VIEW_TYPE_ITEM; } static class HeaderViewHolder extends RecyclerView.ViewHolder { public HeaderViewHolder(View itemView) { super(itemView); } } static class ItemViewHolder extends RecyclerView.ViewHolder { private TextView mTextView; public ItemViewHolder(View itemView) { super(itemView); mTextView = itemView.findViewById(R.id.text_view); } public void bind(String item) { mTextView.setText(item); } } } ``` 在上面的示例中,HeaderView在getItemViewType()方法中被视为第一个项目(position == 0),并在onCreateViewHolder()方法中使用HeaderViewHolder创建。在onBindViewHolder()方法中,我们只需要绑定实际项目,因此需要将位置减去1(position - 1)以跳过HeaderView
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值