在RecyclerView 實現頁眉和頁腳
問題:
問題:添加頁眉或頁腳RecyclerView 可能是一個挑戰。提供的程式碼建議使用 addView(View view, intposition) 將視圖新增至 LinearLayoutManager,但此方法不成功並導致 NullPointerException。
解決方案:
新增頁腳重寫 getItemViewType 以將頁腳與普通清單項目區分開。
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); } } }
頁腳適配器範例:
新增頁眉重寫 getItemCount 以將標題包含在計數中。
以上是如何為 RecyclerView 新增頁首和頁尾而不出現 NullPointerException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!