2010-11-04 7 views
0

Alors que j'examine et prototyper mon projet Android, j'ai remarqué qu'il y a une vue qui a une liste d'éléments qui sont très personnalisés. J'ai compris la plupart de mes outils que je prévois d'utiliser mais j'ai besoin de conseils.Meilleure façon de créer une vue personnalisée pour chaque élément de la liste

J'ai une liste d'éléments qui peuvent contenir des photos, du texte vers la droite, une image vers le bas et plus de texte ci-dessous. Très confus je sais. Chacun d'eux peut être présent pour un article. La seule chose qui sera toujours là est le titre.

Donc, ma question - quelle est la meilleure façon de créer chaque vue de liste personnalisée? Je pense que je dois utiliser ce getView pour créer chaque vue. Mais lors de la création de chaque vue, est-il préférable de créer une vue dynamiquement et d'ajouter une image, par exemple, si elle existe, ou de créer un fichier xml avec tous les éléments possibles et de les masquer selon l'élément?

Répondre

3

En termes de performance n ° 2, c'est mieux parce que vous serez capable de réutiliser le convertView donné par le ListView à votre adaptateur en tant qu'argument getView(). Pour permettre un défilement régulier de ListView, vous devez éviter toute création de vue pendant l'appel getView().

Vous pouvez trouver une implémentation efficace de getView() dans this sample from the Developer Guide. Il y a 2 points importants:

  • réutiliser le convertView lorsque disponible
  • utiliser un ViewHolder attaché à la vue d'éviter d'avoir à retrouver vos sous-vues dans chaque appel à getView()
+0

Avez-vous un exemple? Je prévoyais de faire # 2 de toute façon, mais maintenant je suis intrigué parce que je pensais qu'une fois que vous créez une vue, vous ne pouvez pas le réutiliser. Tout échantillon de code serait génial. –

0

J'irais aveC# 2. Vous pouvez créer une mise en page xml avec tous vos éléments présents, puis écrire un adaptateur de liste dans lequel vous pouvez masquer et afficher les éléments selon vos besoins. De cette façon, si vous avez besoin de changer la mise en page, vous pouvez simplement modifier le xml.

+0

Merci , c'est ce que je me penchais vers. Utiliser le getView semble être la bonne solution, n'est-ce pas? –

+0

Oui. C'est vrai. – CaseyB