recherche
MaisonJavajavaDidacticielComment ajouter un en-tête et un pied de page à un RecyclerView sans obtenir une NullPointerException ?

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

Implémentation des en-têtes et des pieds de page dans RecyclerView

Problème :

Ajout d'un en-tête ou d'un pied de page à un RecyclerView peut être un défi. Le code fourni suggère d'ajouter une vue au LinearLayoutManager à l'aide de addView (View view, int position), mais cette approche n'a pas abouti et a entraîné une NullPointerException.

Solution :

Ajout d'un pied de page

Pour ajouter un pied de page à une RecyclerView, suivez ces étapes :

  • Créez un ViewHolder pour la vue de pied de page.
  • Remplacez onCreateViewHolder pour gonfler la vue du pied de page si nécessaire.
  • Remplacez onBindViewHolder pour lier les données à la vue du pied de page.
  • Remplacez getItemCount pour inclure le pied de page dans le décompte.
  • Remplacez getItemViewType pour distinguer le pied de page des éléments de liste normaux.

Exemple d'adaptateur de pied de page :

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>

Ajout d'un en-tête

L'ajout d'un en-tête à un RecyclerView suit un processus similaire :

  • Créez un ViewHolder pour la vue d'en-tête.
  • Remplacez onCreateViewHolder pour gonfler la vue d'en-tête si nécessaire.
  • Ajoutez la vue d'en-tête à RecyclerView à l'aide de RecyclerView.addHeaderView (Vue d'affichage).
  • Remplacez getItemCount pour inclure l'en-tête dans le décompte.

Supplémentaire Notes :

  • Si vous avez besoin de plusieurs en-têtes et pieds de page, gérez-les de la même manière en ajustant les méthodes getItemViewType et getItemCount.
  • Le référentiel GitHub fourni offre une implémentation complète de l'ajout des deux en-têtes et pieds de page.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel