2010-11-22 9 views
0

J'ai reçu une liste d'éléments affichés avec un SimpleAdapter qui obtient la liste des éléments à afficher. L'élément dans la liste d'objets (celui que je passe à SimpleAdapter) a un champ que je veux utiliser pour différencier le style des éléments (les éléments sont TextView) à afficher mais je ne sais pas comment le faire.Android SimpleAdapter modifier le style d'élément

Merci à l'avance

Jaxer

Répondre

2

Vous aurez besoin de sous-classe adaptateur (ou un de ses sous-types) et faire quelque chose le long des lignes de cette méthode dans la getView:

TextView row; 
// Recycle an already-inflated view if possible 
if (convertView == null) { 
    row = (TextView) View.inflate(android.R.layout.simple_list_item_1, getContext()); 
} else { 
    row = (TextView) convertView; 
} 
SomeModel myItem = getItem(pos); 
if (getItem(pos).displayFunky()) { //or whatever object condition you want to check 
    row.setTextColor(Color.RED) 
} else { 
    row.setTextColor(Color.GREEN) 
} 

row.setText(myItem.getDisplayText()); 

return row; 

Vous pouvez également avoir un adaptateur personnalisé avec plusieurs types de vue, mais c'est un cas assez simple que je ne voudrais probablement pas déranger. Voir également this SO post. Vous devriez également vérifier l'exemple de code pour les adaptateurs (ici one from NPR, par exemple) et un multiple-views-in-a-adapter plus complexe tutorial. Vous devriez également consulter définitivement les inimitables présentations de Romain Guy sur ListViews à Google I/O 2009 et 2010 - elles vous épargneront des heures de chagrin d'amour, de confusion, de douleur et d'amélioration des performances.

Questions connexes