Implementing Headers and Footers in RecyclerView
Problem:
Adding a header or footer to a RecyclerView can be a challenge. The code provided suggests adding a view to the LinearLayoutManager using addView(View view, int position), but this approach was not successful and resulted in a NullPointerException.
Solution:
Adding a Footer
To add a footer to a RecyclerView, follow these steps:
Example Footer Adapter:
public class FooterViewHolder extends RecyclerView.ViewHolder { public FooterViewHolder(View itemView) { super(itemView); } } public class RecyclerViewWithFooterAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int FOOTER_VIEW = 1; private List<String> data; @Override public int getItemCount() { return data == null ? 0 : data.size() + 1; } @Override public int getItemViewType(int position) { return position == data.size() ? FOOTER_VIEW : super.getItemViewType(position); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v; if (viewType == FOOTER_VIEW) { v = LayoutInflater.from(context).inflate(R.layout.list_item_footer, parent, false); return new FooterViewHolder(v); } v = LayoutInflater.from(context).inflate(R.layout.list_item_normal, parent, false); return new NormalViewHolder(v); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof FooterViewHolder) { FooterViewHolder vh = (FooterViewHolder) holder; } else { NormalViewHolder vh = (NormalViewHolder) holder; vh.bindView(position); } } }
Adding a Header
Adding a header to a RecyclerView follows a similar process:
Additional Notes:
The above is the detailed content of How do you add a header and footer to a RecyclerView without getting a NullPointerException?. For more information, please follow other related articles on the PHP Chinese website!