comment accéder à un élément spécifique de chaque grille de point de vue
J'ai un gridview dans lequel il y a deux éléments dans chacun de ses éléments, le premier est une image, et le second est un titre, le titre est invisible dans le lancement de l'application, mais j'ai un bouton à l'extérieur de la grille, quand je clique dessus, je veux changer la visibilité des titres des articles pour devenir visible, mon problème est que je ne peux pas accéder à chaque titre de chaque élément dans la vue grille. Lorsque j'ai mis la visibilité des titres (TextView) dans le onClick méthode de l'indépendant bouton dans mon activité, il modifie la visibilité que pour le PREMIER élément dans la vue grille!
Cette esquisse de représenter mon interface, de sorte que les titres sont invisibles au début, mais quand je clique sur "SetVisibilityButton", j'ai envie de les mettre en Visible :
Image1 Image2 Image3
Title1 Title2 Title3
Image4 Image5 Image6
Title4 Title5 Title6
Image7 Image8 Image9
Title7 Title8 Title9
----------------------------
SetVisibilityButton
____________________________
- Je régler l'affichage de la grille dans mon oncreate() de l'activité :
favorGrid = (GridView) findViewById(R.id.favorGrid);
favorGrid.setAdapter(adapter);
Dans mon ImageAdapter classe, c'est mon getView() méthode :
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View MyView = convertView;
/*we define the view that will display on the grid*/
//Inflate the layout
LayoutInflater li = getLayoutInflater();
MyView = li.inflate(R.layout.favor_item, null);
//Add The Text!!!
TextView tv = (TextView)MyView.findViewById(R.id.title);
tv.setText(mTitles[position]);
//Add The Image!!!
ImageView iv = (ImageView)MyView.findViewById(R.id.favor_item_image);
iv.setImageResource(mThumbIds[position]);
return MyView;
}
Pour obtenir le titre d'textview de mon activité principale et l'ensemble de sa visibilité, j'ai essayé :
TextView title = (TextView) findViewById(R.id.title);
title.setVisibility(View.VISIBLE);
et essayé :
//gv is the gridview (R.id.gridview)
TextView title = (TextView)gv.findViewById(R.id.title);
title.setVisibility(View.VISIBLE);
et essayé :
LinearLayout layout = (LinearLayout) findViewById(R.id.gridLayout);
TextView title = (TextView)layout.findViewById(R.id.title);
title.setVisibility(View.VISIBLE);
Mais toutes ces solutions de régler la visibilité uniquement pour le premier élément dans la vue grille.
J'ai passé beaucoup de temps avec ce problème, mais je n'ai pas encore trouvé de solution, quelqu'un pourrait m'aider à la réparer s'il vous plaît
je vous remercie à l'avance
ok, je vais modifier mon post
OriginalL'auteur Alaoui Ghita | 2012-01-20
Vous devez vous connecter pour publier un commentaire.
C'est simple:
favorGrid = (GridView) findViewById(R. id.favorGrid); favorGrid.setAdapter(adapter); final int taille = favorGrid.getChildCount(); for(int i = 0; i < taille; i++) { ViewGroup gridChild = (ViewGroup) favorGrid.getChildAt(i); int childSize = gridChild.getChildCount(); for(int k = 0; k < childSize; k++) { if( gridChild.getChildAt(k) instanceof TextView ) { gridChild.getChildAt(k).setVisibility(View.VISIBLE); } } }
Super ! il fonctionne ! Merci beaucoup, mais j'ai une autre question: si j'ai deux textview dans chaque élément de la grille, comment puis-je précise sorcière textview je veux mettre à jour ? parce que ici : "gridChild.getChildAt(k) instanceof TextView" vous identifier uniquement le type de la vue (TextView), et non une TextView (si nous en avons plus qu'un seul)
l'utilisation de l'enfant "getId()", vous pouvez comparer les id avec R. id.YOUR_SPECIFIED_ID pour déterminer si c'est la vue de votre recherche pour 🙂
Ghita. Si vous pensez que cette réponse vous a aidé, vous devez accepter. de cette façon, il sera d'encourager la ppl pour répondre à vos questions à l'avenir.
OriginalL'auteur Andreas
De la bonne façon pour obtenir la vue de la liste pour une position spécifique est la suivante:
OriginalL'auteur SerSánGal