2010-12-04 16 views
3

Envisager un Android ListView avec un menu contextuel configuré avec registerForContextMenu. Le menu contextuel d'un élément ListView s'affiche lorsque l'utilisateur appuie longuement sur la vue de l'élément.Afficher le menu contextuel à la demande dans Android

En outre, je voudrais montrer le menu contextuel lorsque l'utilisateur tape (pas de longues pressions) sur l'élément (si certaines conditions sont remplies). Est-il possible de faire cela? Comment?

+0

pas clair exactement le problème. Vous voulez dire que vous avez configuré le ListView avec registerForContextMenu et qu'il ne s'affiche toujours pas - ou l'est déjà? –

+0

Je souhaite également afficher le menu contextuel lorsque l'utilisateur appuie sur (pas de taps longs). – hpique

Répondre

6

J'ai réussi à résoudre cela en parcourant le code source Android. Voici ce que je l'ai fait:

protected void onItemClick(AdapterView<?> adapterView, int position) { 
    final int start = adapterView.getFirstVisiblePosition(); 
    final int index = position - start; 
    final View childView = adapterView.getChildAt(index); 
    if (childView != null) { 
     adapterView.showContextMenuForChild(childView); 
    } 
} 
1

Oui appeler la méthode performLongClick de votre événement click et il devrait le faire

+0

C'est la manière la plus simple de le faire si vous avez déjà un long clic sur 'onContextItemSelected()'. Créez juste un itemClickListener() 'et ajoutez' performLongClick() '. Cela a fonctionné pour moi, merci! – gcl1