157 votes

Méthodes getViewTypeCount et getItemViewType de ArrayAdapter

Quelqu'un autrement dit peut-il m’expliquer l’utilisation de et méthodes de `` ?

304voto

Matthew Willis Points 26453

Ces gérer le cas où vous souhaitez que les différents types de vue pour des lignes différentes. Par exemple, dans une application contacts, vous pouvez même les lignes d'avoir des photos sur le côté gauche et de l'impair de lignes d'avoir des photos sur la droite. Dans ce cas, vous utilisez:

@Override
public int getViewTypeCount() {
    return 2;
}

@Override
public int getItemViewType(int position) {
    return position % 2;
}

Le cadre utilise votre type de vue de décider lesquels des points de vue à main vous via convertView votre getView méthode. En d'autres termes, dans l'exemple ci-dessus, de même que ses lignes seulement sont recyclés points de vue avec des images sur le côté gauche de la réutilisation, et de l'impair de lignes obtenez seulement ceux avec des photos sur la droite.

Si chaque ligne de votre liste a la même disposition, vous n'avez pas besoin de s'inquiéter à propos des types d'affichage. En fait, BaseAdapter.java fournit un comportement par défaut pour toutes les cartes:

public int getItemViewType(int position) {
    return 0;
}

public int getViewTypeCount() {
    return 1;
}

Ce bien vous offre le même type d'affichage pour chaque ligne.

Modifier - pour décrire le flux général:

  1. Vous lier les données à votre AdapterView à l'aide d'un adaptateur.
  2. L' AdapterView tente d'afficher les éléments qui sont visibles pour l'utilisateur.
  3. Le cadre des appels d' getItemViewType de ligne, n, la ligne qu'il est sur le point de l'affichage.
  4. Le cadre des vérifications de ses recyclé vue sur la piscine pour les vues de la ligne ns'type. Il ne trouve aucun car aucun les points de vue ont été recyclés encore.
  5. getView est appelé pour la ligne n.
  6. Vous appelez getItemViewType de ligne, n pour déterminer le type de vue que vous devez utiliser.
  7. Vous utilisez un si/instruction switch pour gonfler un autre fichier xml selon le type de vue est nécessaire.
  8. Vous remplissez la vue avec des informations.
  9. Vous revenez à la vue, la sortie de la getView, et votre ligne de vue est affiché à l'utilisateur.

Maintenant, quand une vue est recyclé par le défilement de l'écran, il va dans un recyclés vue sur la piscine qui est géré par le framework. Ces sont essentiellement organisées par type de vue, de sorte qu'une vue de type approprié est donné en convertView paramètre dans votre getView méthode:

  1. Le cadre nouveau des appels getItemViewType pour la ligne qu'il souhaite afficher.
  2. Cette fois, il est une vue de l'recyclée de la piscine du type approprié.
  3. Le recyclés vue est transmis à vous en tant que l' convertView paramètre getView méthode.
  4. Vous remplissez le recyclés vue avec de nouvelles informations et de les retourner.

12voto

kyogs Points 2147

Si nous avons besoin afin de montrer les différents type d'affichage dans la liste de la vue et de son bon usage de getViewTypeCount() et getItemViewType() dans l'adaptateur à la place de la bascule d'un affichage.DISPARU et la VUE.VISIBLE peut être très cher à l'intérieur de getView() qui aura une incidence sur la liste de défilement.

Veuillez vérifier celui-ci pour l'utilisation de getViewTypeCount() et getItemViewType() dans l'Adaptateur.

Lien : l'utilisation de la getviewtypecount

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X