Je veux implémenter une disposition en forme de grille avec des en-têtes de section. Pensez à https://github.com/TonicArtos/StickyGridHeaders
Ce que je fais maintenant:
mRecyclerView = (RecyclerView) view.findViewById(R.id.grid);
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(mAdapter.getItemViewType(position)){
case MyAdapter.TYPE_HEADER:
return 1;
case MyAdapter.TYPE_ITEM:
return 2;
default:
return -1;
}
}
});
mRecyclerView.setLayoutManager(mLayoutManager);
Désormais, les éléments normaux et les en-têtes ont une taille de portée de 1. Comment résoudre ce problème?
mAdapter.getItemViewType(position)
renvoie la valeur correcte?Réponses:
Le problème était que l'en-tête devait avoir une taille de portée de 2 et que l'élément normal devait avoir une taille de portée de 1. Les implémentations correctes sont donc:
la source
L'en-tête doit avoir une étendue égale au nombre d'étendues de la liste entière.
la source
Réponse à ma propre question: remplacez le getSpanSizeLookup () de l'activité après avoir configuré l'adaptateur.
la source