2010-09-02 4 views
1
@Override 
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 

     super.onCreateContextMenu(menu, v, menuInfo); 
     menu.setHeaderTitle("Selection Options"); 
     menu.add(0, v.getId(), 0, "Remove"); 
    } 

Je veux que mon menu pour dire « Supprimer AAPL »Comment créer un menu contextuel dynamique dans Android?

je recevrais la AAPL chaîne de mon adaptateur de tableau, mais je ne sais pas comment je peux accéder à mes adaptateurs Indexer un tableau de cette méthode.

Répondre

2

Copie menuInfo dans un objet AdapterView.AdapterContextMenuInfo. De là, vous pouvez obtenir le position et id de l'article dans le ListView qui a été long-tapoté.

+0

AdapterContextMenuInfo = (AdapterContextMenuInfo) menuInfo; // ne peut pas être résolu ... pouvez-vous me montrer comment le lancer correctement? –

+0

@Sheehan Alam: Ce n'est pas 'AdapterContextMenuInfo'. C'est 'AdapterView.AdapterContextMenuInfo'. Voir cet exemple de projet: http://github.com/commonsguy/cw-android/tree/master/Database/Constants/ – CommonsWare

+0

L'exemple ne fonctionne que sur ContextItemSelected, je fais quelque chose de similaire là-bas. Que diriez-vous de onCreateContextMenu? Je ne peux pas lancer le ContextMenuInfo ... –

5

Exemple si vous utilisez listviews avec un objet personnalisé:

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 

    AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; 
    MyObject obj = (MyObject) myListView.getItemAtPosition(info.position); 

    menu.setHeaderTitle("Selection Options"); 
    menu.add(0, v.getId(), 0, "Remove " + obj.name); 
} 
Questions connexes