Dans un android ListView, comment puis-je effectuer une itération/manipuler toutes les vues enfant, et pas seulement celles que l'on voit?
Le code ci-dessous ne permet PAS de modifier le texte de l'ensemble des ListView's
lignes car getChildCount()
ne pas obtenir tout d'un ListView's
lignes, mais seulement les lignes qui sont visibles.
for (int i = 0; i < listView.getChildCount(); i++)
{
View v = listView.getChildAt(i);
TextView tx = (TextView) v.findViewById(R.id.mytext);
tx.setTextSize(newTextSize);
}
Alors, que dois-je faire?
Est-il code pour obtenir une notification lorsqu'un ListView's
ligne devient visible, afin que je puisse régler sa taille du texte, puis?
- Stocker la taille du texte dans votre carte ou votre
ListActivity
et définissez la taille du texte dans votre adaptateurgetView
méthode.
InformationsquelleAutor Corey Trager | 2010-01-22
Vous devez vous connecter pour publier un commentaire.
List13 à partir de l'API Démos fait quelque chose de similaire à l'aide de OnScrollStateChanged. Il peut y avoir une meilleure façon, si:
.
.
.
ÉDITION PAR Corey Trager:
Ci-dessus certainement m'a orienté dans la bonne direction. J'ai trouvé la manipulation OnScrollListener.onScroll a fonctionné mieux que onScrollStateChanged. Même si j'ai enlevé l'instruction de cas dans onScrollSgtaetChanged et traités chaque changement d'état, d'un texte n'est pas redimensionnée. Mais avec onScroll, les choses semblent fonctionner.
Donc, apparemment mon travail code ressemble à ceci:
Dans une liste les seuls enfants sont ceux qui sont visibles. Si vous voulez faire quelque chose avec "tous les enfants," faire de l'adaptateur. C'est le meilleur endroit.
Pas si sûr au sujet de la performance de l'effet, mais u peut l'essayer.