Si vous regardez la source pour simple_list_item_1, vous verrez que c'est juste un TextView. La source est:
<sdk-dir>/platforms/<your-platform>/data/res/layout/simple_list_item_1
Le superclasse ArrayAdapter retournera que TextView dans sa méthode getView. Cela signifie que vous pouvez sous-classer ArrayAdapter, et à l'intérieur de la méthode getView de votre sous-classe, vous pouvez simplement chaîner à la superclasse, afficher la View à TextView, et faire votre chose. Par exemple, si vous vouliez régler les trois premiers articles dans votre liste textSize 24 et le reste à 14, vous pouvez effectuer les opérations suivantes:
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = (TextView) super.getView(position, convertView, parent);
if (position < 3) {
tv.setTextSize(24.0f);
} else {
tv.setTextSize(14.0f);
}
return tv;
}
Si vous utilisez une vue plus compliqué que simple_list_item_1, vous pouvez déterminez l'ID des éléments sur la vue en examinant la source, puis appelez findViewById sur la vue renvoyée par la superclasse. Par exemple, two_line_list_item.xml a TextViews avec ids de android.R.id.text1
et android.R.id.text2
, donc vous devriez être en mesure d'obtenir une poignée sur eux comme suit:
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
TextView tv1 = (TextView)v.findViewById(android.R.id.text1);
TextView tv2 = (TextView)v.findViewById(android.R.id.text2);
//do what you want with the TextViews
}
Il n'y a donc aucun moyen de le faire dans le fichier java? J'allais le changer dynamiquement en fonction de certaines valeurs d'entrée – au789
Avec un élément de liste personnalisé, dans la méthode 'getView' de vos adaptateurs, vous pouvez facilement changer la couleur du texte en appelant' findViewById (R.id.myText) ', puis en appelant' setTextColor '. En fait, vous pouvez le faire avec les éléments de liste intégrés, vous auriez juste besoin de connaître le 'ID 'du TextView. –
donc vous dites que ce n'est pas possible avec la liste de tableau et l'adaptateur de tableau. si je veux atteindre les résultats je devrais faire un article de liste personnalisé? – au789