Obtenir contexte de PopupMenu comme ContextMenu
Donc mon ExpandableListView
a groupe de lignes qui sont définis comme :
group_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/GroupName"
style="@style/ListViewRowStyle"
android:paddingLeft="40dp"
android:textSize="18sp" >
</TextView>
<ImageView
android:id="@+id/Menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginTop="10dp"
android:contentDescription="@string/default_content_description_text"
android:src="@drawable/ic_menu_moreoverflow_normal_holo_light" >
</ImageView>
</RelativeLayout>
Lorsque vous cliquez sur le TextView
il va développer ou réduire selon si oui ou non l'enfant, les lignes sont actuellement affichée. J'ai joint un OnClickListener
à la ImageView
dans la ligne de groupe. Lorsque cette ImageView
est cliqué, je lance un PopupMenu
comme les images ci-dessous :
Une fois le PopupMenu
est affiché et l'une des actions est cliqué, je voudrais effectuer une action sur tous les enfants du groupe. Le problème est que je ne peut pas déterminer la rangée dans laquelle le ImageView
a été cliqué.
Le seul moyen que j'ai compris comment faire pour appliquer une action à tous les enfants est un ContextMenu
comme l'image ci-dessous :
Je veux éviter à l'aide d'un ContextMenu
parce qu'un LongClick sur une ligne de groupe ne peut pas être évident pour un utilisateur de comprendre qu'il mettrait en place certaines actions à effectuer sur les enfants de lignes. Je pense que le plus évident de la conception est à l'ancre à PopupMenu
à un ImageView
(dans mon cas, une icône de menu) et l'action sera appliquée pour les enfants de rangs de ce groupe. Comment puis-je obtenir cette fonctionnalité avec un PopupMenu
?
OriginalL'auteur toobsco42 | 2013-05-18
Vous devez vous connecter pour publier un commentaire.
J'ai donc compris que pour avoir le contexte de l'icône de menu qui a été cliqué, j'ai utilisé la setTag() et getTag() méthodes de la
View
classe et juste appliqué ces méthodes à laImageView
(icône de menu).OriginalL'auteur toobsco42
Vous avez besoin:
View
où pour gonfler le PopUpMenu (votreImageView
)PopUpMenu
enregistré dans res/menu, dans ce caspopup_select_deselect.xml
onMenuItemClickListener
déclarée comme une classe interne, dans ce casonMenuItemClickListener_View
Code:
Le code ci-dessus est seulement une statique de la déclaration de ce que votre propre
OnMenuItemClickListener
fera.Prêter attention à la
View
dans le constructeur de la suite de l'auditeur. Lorsque vous créez une instance de cette écoute, laView
Id est le même déclaré dans le fichier XML de mise en page. À l'exécution, il sera mis à jour, de sorte que lorsque la méthodeonMenuItemClick
sera appelé, leTextView
ID est déjà changé.Voici le code:
OriginalL'auteur Re MiDa