2010-09-21 5 views
0

J'ai une liste de visualisation et je gonfle la première position avec une mise en page et chaque autre position que je fais un autre inflation avec une autre mise en page. Je peux le faire en vérifiant chaque fois dans getView, mais comme vous pouvez l'imaginer, ce n'est pas très efficace.gonfler 2 dispositions différentes à une listeAdapter sur Android

Pouvez-vous me partager vos pensées pour obtenir ce résultat en ayant ce modèle? (Ce ne

if (convertView == null) { 
    if (position == 0) 
    convertView = mInflater.inflate(R.layout.inside_list_2, 
          parent, false); 
    else 
    convertView = mInflater.inflate(R.layout.inside_list, null); 
    } 
else{ 
     holder=(ViewHolder)convertView.getTag(); 
} 

Répondre

3

me obtenir le résultat correct (cause après 4-5 positions, en fonction du nombre de postes gonflé la première fois, je reçois le layout.inside_list_2 sur d'autres positions aussi.) Votre Le problème est lié au fait que les vues dans un ListView sont réutilisées lorsque vous faites défiler.Cela est fait pour des raisons de performances

Ainsi, dans getView, vous ne pouvez pas compter que convertView soit dans un état initial donné. la vue chaque fois pour s'assurer que c'est la bonne

Cependant, dans votre cas, vous pourriez vouloir ook en utilisant a header view.

+0

vue d'en-tête était exactement ce que je voulais. – weakwire

+0

si vous utilisez correctement 'getItemViewType' et' getViewTypeCount', vous pouvez être sûr que convertView a un type valide (ou est null) - voir ma réponse – tomash

Questions connexes