/ / Obtener el elemento seleccionado en un menú de contexto de ListItem - android, android-listview, android-contextmenu

Obtener el elemento seleccionado en un menú de contexto de ListItem - android, android-listview, android-contextmenu

Tengo un ListView que crea un ContextMenu enPulsación larga de uno de sus elementos. ¿Cómo encuentro el elemento que se seleccionó en el ListView que creó este menú de contexto (no el elemento de menú seleccionado)? Aquí está mi código:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, final View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("Actions");
android.view.MenuItem remove = menu.add("Remove");
final int selectedItem = ((ListView)v).getSelectedItemPosition();
remove.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(android.view.MenuItem item) {
doSomething(listAdapter.getItem(selectedItem)); // NPE here
return true;
}
});
}
});

Tenga en cuenta que no quiero el elemento que se seleccionó en el menú contextual, sino el elemento ListView que activó este menú contextual.

Respuestas

8 para la respuesta № 1

Necesitará AdapterContextMenuInfo para ello.

Seguir Snippet te ayudará

public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
String[] names = getResources().getStringArray(R.array.names);
switch(item.getItemId()) {
case R.id.edit:
Toast.makeText(this, "You have chosen the " + getResources().getString(R.string.edit) +
" context menu option for " + names[(int)info.id],
Toast.LENGTH_SHORT).show();
return true;
…………………..
default:
return super.onContextItemSelected(item);
}