L'ajout d'en-têtes et de pieds de page à un RecyclerView peut améliorer l'expérience utilisateur en fournissant des informations ou des fonctionnalités supplémentaires. Bien que la bibliothèque de support Android ne fournisse pas nativement de méthodes pour cela, il existe des techniques éprouvées pour y parvenir.
Ajout d'en-têtes :
Ajout de pieds de page :
Prend en charge à la fois la grille et le linéaire Mises en page :
Pour gérer à la fois GridLayoutManager et LinearLayoutManager, remplacez getItemViewType(int) et renvoyez différents types de vue pour votre en-tête, votre pied de page et vos éléments de contenu. Utilisez RecyclerView.Adapter#getItemCount() pour inclure à la fois l'en-tête et le pied de page dans le décompte.
Exemple de mise en œuvre :
import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import java.util.List; public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> { private static final int VIEW_TYPE_HEADER = 0; private static final int VIEW_TYPE_FOOTER = 1; private static final int VIEW_TYPE_CONTENT = 2; private List<String>listData; private View headerView; private View footerView; public MyRecyclerViewAdapter(List<String>listData, View headerView, View footerView) { this.listData = listData; this.headerView = headerView; this.footerView = footerView; } @Override public int getItemViewType(int position) { if (position == 0) { return VIEW_TYPE_HEADER; } else if (position == getItemCount() - 1) { return VIEW_TYPE_FOOTER; } else { return VIEW_TYPE_CONTENT; } } @Override public MyRecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch(viewType) { case VIEW_TYPE_HEADER: return new ViewHolder(headerView); case VIEW_TYPE_FOOTER: return new ViewHolder(footerView); default: return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.content_item, parent, false)); } } @Override public void onBindViewHolder(MyRecyclerViewAdapter.ViewHolder holder, int position) { if (holder.getItemViewType() == VIEW_TYPE_CONTENT) { // Bind content item logic } } @Override public int getItemCount() { return listData.size() + 2; } public static class ViewHolder extends RecyclerView.ViewHolder { public ViewHolder(View itemView) { super(itemView); } } }
En utilisant ces techniques, vous pouvez efficacement ajoutez à la fois des en-têtes et des pieds de page à votre RecyclerView, améliorant ainsi l'expérience utilisateur et accueillant divers gestionnaires de mise en 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!