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.