ホームページ >Java >&#&チュートリアル >NullPointerException を取得せずに、RecyclerView にヘッダーとフッターを追加するにはどうすればよいですか?

NullPointerException を取得せずに、RecyclerView にヘッダーとフッターを追加するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-17 14:20:02279ブラウズ

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

RecyclerView でのヘッダーとフッターの実装

問題:

へのヘッダーまたはフッターの追加RecyclerView は難しい場合があります。提供されているコードでは、addView(View view, int Position) を使用して LinearLayoutManager にビューを追加することを提案していますが、このアプローチは成功せず、NullPointerException が発生しました。

解決策:

フッターを追加する

フッターを追加するにはフッターを RecyclerView に追加するには、次の手順に従います。

  • フッター ビューの ViewHolder を作成します。
  • 必要に応じて、onCreateViewHolder をオーバーライドしてフッター ビューを拡張します。
  • Override onBindViewHolderデータをフッターにバインドするにはview.
  • カウントにフッターを含めるには 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);
        }
    }
}

ヘッダーの追加

RecyclerView へのヘッダーの追加は、同様のプロセスに従います:

  • Createヘッダー ビューの ViewHolder。
  • Override onCreateViewHolder を使用して、必要に応じてヘッダー ビューを拡張します。
  • RecyclerView.addHeaderView(View view) を使用して、RecyclerView にヘッダー ビューを追加します。
  • カウントにヘッダーを含めるには、getItemCount をオーバーライドします。

追加注:

  • 複数のヘッダーとフッターが必要な場合は、getItemViewType メソッドと getItemCount メソッドを調整して同様に処理します。
  • 提供された GitHub リポジトリは、両方を追加する完全な実装を提供します。ヘッダーとフッター。

以上がNullPointerException を取得せずに、RecyclerView にヘッダーとフッターを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。