J'essayais de créer un simple ListView
dans une application Android et de changer la couleur de fond des vues.Confusion à propos de la récupération des vues de ListView
J'ai réussi en écrasant simplement la méthode getView()
de la classe ArrayAdapter
définie et en la modifiant à l'intérieur.
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, Categories) {
@Override
public View getView(int pos, View v, ViewGroup vg) {
View view = super.getView(pos, v, vg);
switch (pos) {
case 0:
view.setBackgroundColor(Color.RED);
break;
case 1:
view.setBackgroundColor(Color.BLUE);
break;
default:
break;
}
return view;
}
};
Cependant, si je supprime le commutateur déclaration et l'utiliser en dehors de cette fonction en vue de retour, les couleurs ne mettent pas à jour. Je veux dire quelque chose comme ceci: (lv
est mon ListView
)
lv.setAdapter(arrayAdapter);
for (int i=0; i<2; ++i) {
View V = (View) lv.getAdapter().getView(i, null, lv);
switch (i) {
case 0:
V.setBackgroundColor(Color.RED);
break;
case 1:
V.setBackgroundColor(Color.BLUE);
break;
default:
break;
}
}
Il ne renvoie une référence à la vue, alors pourquoi cela ne fonctionne pas de cette façon?
Pouvez-vous poster le code pour ceci: 'supprimer l'instruction-switch et l'utiliser en dehors de cette fonction avec la vue retournée'? Je ne suis pas sûr de comprendre ce que vous avez fait là-bas. –
J'ai édité mon post pour le rendre plus clair. – Philipp317
Vous avez ce code dans 'onCreate'? Aussi, recevez-vous une exception dans le deuxième cas? –