2012-03-28 10 views
0

Ich habe eine ListView, die es dem Benutzer ermöglicht, lange auf ein Element zu drücken, um ein Kontextmenü zu erhalten. Das Problem, das ich habe, ist festzustellen, welche ListItem sie lang gedrückt haben. Ich habe 3 Spalten, (ID, Text, Kommentar). Ich muss den ID-Wert abrufen, wenn Sie darauf klicken.Erkennen, welches ausgewählte Element (in einer ListView multicolumn) das ContextMenu (Android) hervorgebracht hat

Ich habe versucht das zu tun:

@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; 
} 

ABER, ich cacth immer die ID aus dem ersten Element der Listenansicht. Wenn ich in der Listenansicht auf den zweiten Eintrag klicke, erhalte ich die erste ID nur auf der Liste.

Jede Hilfe bitte.

Vielen Dank im Voraus.

Antwort

1

den Code unten Verwenden Sie den ausgewählten Zeilenindex zu erhalten -

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

       int selectedPostion = ctxMenuInfo.position; 
} 
1

die Sie interessieren, wenn Sie Ihre Daten aus der ausgewählten Ansicht selbst extrahieren möchte.

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