Je n'ai aucune difficulté à créer plusieurs porte-vues dans une vue recyclée. Le problème c'est que je le détermine en positionnant les en-têtes et les items.Comment déterminer le positionnement pour RecyclerView avec plusieurs porte-vues
Je crée une application de galerie et je veux avoir les noms de mes albums en en-tête et mettre 8 images pour chaque album. Donc, vous auriez un en-tête avec le titre de l'album, puis 8 images de cet album. puis l'en-tête suivant avec le titre de l'album et 8 photos de cet album. Et continuez avec ce schéma. S'il y a moins de 8 images, je veux les laisser vides jusqu'à ce que l'en-tête suivant commence.
J'ai deux ArrayList dont je reçois mes données. Albums et médias.
J'essaie de définir le type dans getItemViewType de ma carte, mais je n'arrive pas à comprendre comment les définir comme mentionné ci-dessus. Ce qui m'embrouille, c'est d'essayer de positionner avec plusieurs arrailistes et un nombre inconnu d'images pour chaque album.
Encore une fois, il ne s'agit pas d'une autre question comme celles que j'ai vues à propos de la configuration de plusieurs vues dans une vue recyclée. J'ai ce concept. Mon problème est de déterminer le positionnement pour les détenteurs de vue.
Voici comment créer et lier mes vues cherchent à donner un contexte
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == ALBUM_TYPE) {
return new AlbumHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view, parent, false));
} else if (viewType == HEAD_TYPE) {
return new HeadHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.header_text, parent, false));
} else {
return new MediaHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.card_photo, parent, false));
}
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
if (holder instanceof AlbumHolder) {
Album m = albums.get(position);
((AlbumHolder)holder).bindView(m, position);
} else if (holder instanceof HeadHolder) {
if (sortingMode == SortingMode.FOLDER) {
Album m = albums.get(position);
((HeadHolder)holder).bindView(m.getName(), position);
} else {
String m = sortListYear.get(position);
((HeadHolder)holder).bindView(m, position);
}
} else {
Media m = media.get(position);
((MediaHolder)holder).bindView(m, position);
}
}
Le ALBUM_TYPE ne sert à cette question que je pose. Juste le HEAD_TYPE et MEDIA_TYPE.
J'aime cette approche, mais j'ai du mal à créer l'objList.J'essaye une boucle imbriquée mais ne peux pas sembler la faire fonctionner. des conseils sur la façon dont il aurait l'air. Mes médias ont une méthode pour voir à quel album (tête) il appartient. – Bignadad
pouvez-vous partager du code sur la façon dont vous essayez de créer objList? De cette façon, il serait plus facile à suggérer. – singhnikhil