2011-05-08 3 views
0

J'ai besoin de gérer la ligne sélectionnée dans listview sur un long clic sur la ligne, mais parce que je suis en utilisant les menus je ne peux pas remplacer le onclicklistener. J'essaie de faire ceci:gérer onlongclicklistener des menus

listView.setOnLongClickListener(new OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     taskPosition = listView.getSelectedItemPosition(); 
     return true; 
    } 
}); 

mais cela ne fonctionne pas. Quelqu'un peut-il m'aider?

+0

Pourriez-vous être plus précis que "ne fonctionne pas"? – hammar

+0

ok j'ai la valeur de listView.getSelectedItemPosition(); est égal à -1 par débogueur je dois gérer la sélection longclick sur listview et l'utiliser dans onContextItemSelected pour effectuer l'action – khwileh

Répondre

2

J'ai la valeur de listView.getSelectedItemPosition(); est égal à -1

Bien sûr. Les lignes ne sont généralement pas sélectionnées. Les lignes ne sont sélectionnées que si l'utilisateur utilise un périphérique de pointage (pavé directionnel, boule de commande, etc.).

i besoin de gérer la sélection longclick sur ListView et l'utiliser dans onContextItemSelected pour exécuter cette action

Non, vous ne le faites pas. Vous utilisez les menus contextuels ou vous utilisez un écouteur de clic long avec un widget. Vous n'utilisez pas les deux.

Si vous essayez de déterminer quelle ligne a été cliquée longuement depuis onContextItemSelected(), here is a sample project, cela montrera que pour vous, si votre adaptateur est un ArrayAdapter. Si vous utilisez un CursorAdapter, here is a different sample project qui le démontrera pour vous.

+0

merci pour votre réponse, mais je pense ne suis pas clarifier ma question, donc j'ai exemple pour le clarifier, dans android 2.2 dans journal des appels si vous faites un long clic sur la liste des appels numéro et obtenu la pop des menus que vous voyez les menus gérer les numéros qui sont sélectionnés dans la liste des appels, ce qui me semble nécessaire est comment sauvegarder la sélection de la liste et utiliser dans les menus – khwileh

+0

@Hassan Khwieh: Vous trouvez quelle ligne a été cliquée longuement dans 'onCreateContextMenu()' à partir de l'objet 'ContextMenu.ContextMenuInfo' fourni. Les mécanismes sont les mêmes que dans les exemples que je montre, bien que je tarde à regarder cet objet jusqu'à 'onContextItemSelected()'. – CommonsWare

+0

thats bon merci – khwileh

Questions connexes