2012-03-28 3 views
0

J'ai un ListView qui permettra à l'utilisateur d'appuyer longuement sur un élément pour obtenir un menu contextuel. Le problème que j'ai est de déterminer quel ListItem ils ont longtemps appuyé. J'ai 3 colonnes, (ID, texte, commentaire). J'ai besoin de récupérer la valeur d'ID quand on clique dessus.Détection de l'élément sélectionné (dans une multicolonne ListView) engendré le ContextMenu (Android)

J'ai essayé de le faire:

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    if (item.getTitle() == "Delete") { 
    View view = getWindow().getDecorView().findViewById(android.R.id.content); 
    //The rowId receive the ID clicked from the listview 
    rowId = ((TextView)view.findViewById(R.id.ID)).getText().toString(); 
    showDialog(0); 
    } else return false; 
    return true; 
} 

MAIS, je cacth toujours l'ID du premier élément de ListView. Si je clique sur le deuxième élément sur listview, je reçois le premier identifiant sur la liste seulement.

Toute aide s'il vous plaît.

Merci d'avance.

Répondre

1

Utilisez le code ci-dessous pour obtenir l'index de ligne sélectionnée -

public boolean onContextItemSelected(MenuItem item) { 
      try { 
       AdapterContextMenuInfo ctxMenuInfo; 
       try { 
        ctxMenuInfo = (AdapterContextMenuInfo) item.getMenuInfo(); 
       } catch (ClassCastException e) { 
        return false; 
       } 

       int selectedPostion = ctxMenuInfo.position; 
} 
1

Essayez si vous souhaitez extraire vos informations de la vue sélectionnée lui-même.

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
View v = info.targetView; 
rowId = ((TextView)v.findViewById(R.id.ID)).getText().toString(); 
Questions connexes