Comment implémentez-vous un menu contextuel déclenché par un clic long ou tapez sur un ListActivity qui utilise les dispositions intégrées et un ListAdapter?Comment implémentez-vous le menu contextuel dans un ListActivity sur Android?
Répondre
Sur l'appel registerForContextMenu comme méthode onCreate ceci:
registerForContextMenu(getListView());
puis renseigner le menu sur onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo). L'argument menuInfo peut fournir des informations sur quel élément a été long cliqué ainsi:
AdapterView.AdapterContextMenuInfo info;
try {
info = (AdapterView.AdapterContextMenuInfo) menuInfo;
} catch (ClassCastException e) {
Log.e(TAG, "bad menuInfo", e);
return;
}
long id = getListAdapter().getItemId(info.position);
et vous ajoutez des éléments de menu de la manière habituelle appeler menu.add:
menu.add(0, MENU_ITEM_ID, 0, R.string.menu_string);
et lorsque l'utilisateur choisit une option , onContextItemSelected est appelée. Aussi onMenuItemSelected et ce fait n'est pas explicitement expliqué dans la documentation sauf pour dire que vous utilisez l'autre méthode pour recevoir les appels depuis le menu contextuel; Sache juste, ne partage pas les ids.
Sur onContextItemSelected vous pouvez obtenir Ahold du MenuInfo et donc l'identifiant de l'élément sélectionné en appelant getMenuInfo():
try {
info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
Log.e(TAG, "bad menuInfo", e);
return false;
}
long id = getListAdapter().getItemId(info.position);
Ahh, merci. Été à la recherche de tout cela sur le Web, mais ne pouvait trouver que l'ancienne version. Celui-ci fonctionne parfaitement avec cupcake. –
Je sais que le code de garde ClassCastException apparaît dans l'exemple de Google, mais je pense que c'est probablement inutile. Il est peu probable que le MenuInfo soit seulement parfois un AdapterContextMenuInfo - il sera probablement toujours ou jamais. La clause de garde empêche l'application de s'écraser, mais vous avez un bug de logique de toute façon. Personnellement, je préférerais voir toute la trace de la pile, mais c'est juste ma préférence. –
@Daniel Yankowsky: Si vous utilisez 'registerForContextMenu' qu'une seule fois: oui. Mais avec une disposition d'activité de liste personnalisée, vous pouvez également avoir d'autres éléments à enregistrer. Mais alors: ne serait-il pas mieux d'utiliser 'instanceof 'et de vérifier ce que vous avez? - Ah, eh bien, je n'ai jamais vu de bon code de démo. – Martin
Vous devriez également regarder Activity.registerForContextMenu(View).
listView = (ListView) findViewById(R.id.listpockets);
registerForContextMenu(listView);
public void onCreateContextMenu(android.view.ContextMenu menu, View v, android.view.ContextMenu.ContextMenuInfo menuInfo) {
//AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle(getString(R.string.titleDelete));
menu.add(0, CommonUtil.CONTEXT_MENU__DELETE_ID, 0, getString(R.string.menuDelete));
};
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getItemId() == CommonUtil.CONTEXT_MENU__DELETE_ID)
{
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
long id = this.listView.getItemIdAtPosition(info.position);
Log.d(TAG, "Item ID at POSITION:"+id);
}
else
{
return false;
}
return true;
}
- 1. Comment ajouter un menu contextuel à NSOutlineView (ie menu contextuel)
- 2. Comment gérer le geste de fling pour Android ListActivity
- 3. PyQt et le menu contextuel
- 4. Paramètres désactivés dans le menu contextuel Flash
- 5. Menu contextuel
- 6. ajouter un élément au menu contextuel dans le graphique Excel
- 7. Comment vérifier un élément de menu contextuel?
- 8. Comment désactiver le menu contextuel dans une application externe lancée
- 9. PyQt menu contextuel
- 10. ToolStripButton avec menu contextuel?
- 11. Menu contextuel MFC "collant"
- 12. Acrobat Menu contextuel
- 13. Désactiver le menu contextuel du système DataGridView
- 14. menu contextuel parent?
- 15. Désactiver le menu contextuel dans le contrôle Internet Explorer
- 16. Menu contextuel sous winforms
- 17. Comment puis-je programmer le menu contextuel d'un fichier?
- 18. ajouter un élément de menu au menu contextuel par défaut
- 19. Supprimer le menu contextuel dans l'objet AxWebBrowser - problème de synchronisation?
- 20. Menu déroulant/menu contextuel de Cross Browser sur un film flash
- 21. Comment activer le menu contextuel sur un VerticalHeaderItem à l'intérieur d'un QTableWidget?
- 22. Désactiver l'option "Enregistrer la cible sous" dans le menu contextuel
- 23. Svn Move n'apparaît pas dans le menu contextuel
- 24. Création d'un menu contextuel personnalisé
- 25. Afficher le menu contextuel sur la barre de menu de l'application mainframe MFC
- 26. Menu contextuel pour SWF chargé
- 27. Comportement de sélection Strange ListView sur Android
- 28. Comment ajouter un menu contextuel aux éléments de l'arborescence Silverlight?
- 29. Menu contextuel de l'onglet QTabWidget
- 30. Comment créer une fonction dans mon menu contextuel Windows
Votre modification a effectivement complètement changé la question. Aurait probablement été mieux de simplement poser la question différente. –