搜尋
首頁Javajava教程如何為 RecyclerView 新增頁首和頁尾而不出現 NullPointerException?

How do you add a header and footer to a RecyclerView without getting a NullPointerException?

在RecyclerView 實現頁眉和頁腳

問題:

問題:

添加頁眉或頁腳RecyclerView 可能是一個挑戰。提供的程式碼建議使用 addView(View view, intposition) 將視圖新增至 LinearLayoutManager,但此方法不成功並導致 NullPointerException。

解決方案:

新增頁腳
  • 要將頁腳,請依照下列步驟操作:
  • 為頁腳視圖建立一個ViewHolder。
  • 重寫 onCreateViewHolder 以在必要時膨脹頁腳視圖。
  • 重寫 onBindViewHolder 將資料綁定到頁腳視圖。
重寫 getItemCount 將頁尾包含在計數中。

重寫 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);
        }
    }
}</string></recyclerview.viewholder>

頁腳適配器範例:

新增頁眉
  • 向 Recyler>向 Recycler新增標頭遵循類似的過程:
  • 為標頭視圖建立 ViewHolder。
  • 重寫 onCreateViewHolder 以在必要時膨脹標頭視圖。
使用 RecyclerView.addHeaderView(View view) 將標題檢視新增至 RecyclerView。

重寫 getItemCount 以將標題包含在計數中。

  • 其他注意:
如果您需要多個頁眉和頁腳,請透過調整getItemViewType 和getItemCount 方法來類似地處理它們。 提供的 GitHub 儲存庫提供了新增這兩個頁首和頁尾的完整實作頁首和頁尾。

以上是如何為 RecyclerView 新增頁首和頁尾而不出現 NullPointerException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境