comment obtenir de l'avis du groupe dans expandablelistview dans android?
im blazilian donc, mon anglais n'est pas bon.
Donc.. j'ai besoin d'obtenir de l'avis du groupe dans expandablelistview pour obtenir votre balise d'objet à travers la vue.getTag() la méthode.
me suivre dans cet exemple:
ExpandableListView
--> group (i need this view)
----> child
----> child
----> child
--> group (i need this view)
----> child
----> child
Mon code:
@Override
public boolean onChildClick(final ExpandableListView parent, final View v,
final int groupPosition, final int childPosition, final long id) {
/* I NEED GET VIEW OF GROUP FOR GET YOUR TAG*/
View vParent = parent.getChildAt(groupPosition); //dont work after first group
Programa v2 = (Programa) parent.getTag(); //return null
//v parameter is a child of group
return true;
}
dans ma carte:
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TwoLineListItem view = (TwoLineListItem) LayoutInflater.from(contexto)
.inflate(android.R.layout.simple_expandable_list_item_2,
parent, false);
String programa = map.keySet().toArray(new String[map.keySet().size()])[groupPosition];
view.getText1().setText(programa);
view.getText2().setText("PROGRAMA LOCAL");
view.setTag(programas.get(groupPosition)); //i need get this in child click listener
return convertView = view;
}
une idée? grâce
Bienvenue à la. S'il vous plaît essayez de faire de votre question claire afin que les gens peuvent comprendre ce que me demandez-vous.
ok... modification: FAIT! 😀
+1 pour la mise à jour. Merci!
ok... modification: FAIT! 😀
+1 pour la mise à jour. Merci!
OriginalL'auteur user155542 | 2013-10-01
Vous devez vous connecter pour publier un commentaire.
Si votre code est correct, vous voulez obtenir la vue du groupe pour l'enfant de sorte que vous pouvez appeler getTag() sur celui-ci, correct?
Si oui, pourquoi ne pas simplement sauter cette étape et accéder à la valeur de la marque, définie par
programas.get(groupPosition)
manuellement?Vous pouvez le faire en appelant le:
programas.get(groupPosition)
à droite sur le dessus de votreonChildClick
méthode puisque vous obtenez le groupe de valeur de position.Modifier en réponse à votre commentaire:
Le problème ici est que vous n'allez pas être en mesure d'obtenir le point de vue du groupe par le biais de l'adaptateur, car il pourrait impliquer de recréer la vue à cause de recyclage de vues dans les listes. Si cette méthode ne fonctionne pas, je vous suggère fortement de modifier votre code pour le faire fonctionner.
Si
programas
est l'une des entrées de votre carte, appelezgetGroup(groupPosition)
sur votre carte d'accès. Les autres, faire une méthode publique dans votre classe d'adaptateur pour permettre la récupération de la valeur.Édité ma réponse avec une réponse à votre commentaire.
merci.. je vais faire ça 🙂
OriginalL'auteur Kasra Rahjerdi
Pour obtenir l'affichage de groupe à partir d'un ExpandableListView, vous faites quelque chose comme suit:
Où en êtes-vous à l'aide de packedPosition ? Il me semble qu'il est inutilisé!
Le
packedPosition
est censé être utilisé dansgetFlatListPosition
, au lieu de lagroupPosition
1 plus de précisions, getFirstVisbileView() doit être: getFirstVisiblePosition()
OriginalL'auteur ahodder
J'ai essayé AedonEtLIRA réponse, mais il n'a obtenu le premier élément de la liste.
Ma solution a été de mettre une balise dans mon adaptateur getGroupView méthode.
Maintenant dans votre Fragment /Activité, dans votre onGroupExpand et onGroupCollapse:
Alors je peux faire mon animation sur la flèche, c'est pourquoi j'ai voulu obtenir que groupe de vue.
OriginalL'auteur Kevin van Zyl
Bien j'ai utilisé le code suivant pour accéder à un TextView dans un groupe:
}
J'espère que cela aide
AedonEtLIRA En fait, il fonctionne. J'ai utilisé le même code pour accéder à mon groupe de TextView dans un extensible ListView. Voici ce que je veux dire:
TextView dateTV = (TextView) (mCursorAdapter.getGroupView(groupPosition, true, null, null)).findViewById(R.id.date_text_group);
. Vous étiez pressé de me marquer vers le bas. Vous ne devriez pas.Alors que ce code peut compiler et exécuter, je suis certain que l'appel
mAdapter.getGroupView(...)
ne retourne pas d'un point de vue qui est présent dans le ExpandableListView à moins que la carte est utilisée dans un complètement erronée de la mode. Les adaptateurs sont utilisés pour créer ou mettre à jour les vues qui sont fournis en tant que contenu. C'est tout. Ils en eux-mêmes, n'ajoutez pas de vue d'un contrôle ListView. Ce code n'est certainement pas de mise à jour d'une vue que l'on n'est pas passé à la carte. Cela laisse à l'adaptateur, comme la création d'une vue. Cela peut fonctionner, c'est sûr, mais c'est un nouveau point de vue. Il ne fait pas partie de la liste de toute façon, c'était juste créé.Donc, cela dit, le résultat (le tag) se doit de ne pas fonctionner comme prévu. Je n'essaie pas d'être un âne, il suffit simplement d'essayer de comprendre (ou de faire clair) ce qui se passe ici. Je suis plus que disposé à supprimer le vote une fois que le problème est réglé.
AedonEtLIRA Selon le docs la
getGroupView
méthode renvoie "la Vue correspondant au groupe à la position spécifiée". Il n'est pas obligatoire d'être utilisé pour créer une vue de groupe. De toute façon, je ne suis pas un expert Android, donc il n'y a aucun point en insistant sur ce point. Avez-vous une solution plausible au problème?OriginalL'auteur Nick