studio para menus inflar ejemplos desplegable contextual context android android-emulator

para - popup menu android



Android: cómo encontrar la posición presionada desde el menú contextual (3)

Puede usar ContextMenu.ContextMenuInfo .

Algo como eso:

@Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); int index = info.position; }

También puede obtener la View exacta para la que se muestra el menú:

@Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); int index = info.position; View view = info.targetView; }

Tengo una vista de lista llena de datos. Configuré un menú contextual para la vista de lista usando el siguiente código:

list.setOnCreateContextMenuListener ( new View.OnCreateContextMenuListener() { public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { AdapterContextMenuInfo mi =(AdapterContextMenuInfo) menuInfo; menu.add(0, 0, 0, "Delete item"); } } );

Tengo el siguiente método anular para controlar el menú contextual seleccionado:

@Override public boolean onContextItemSelected(MenuItem item) { switch(item.getItemId()) { case 0: ShowAlert("hello from delete item"); break; default: return super.onContextItemSelected(item); } return true; }

En este método sobrescrito, ¿cómo puedo encontrar el elemento de la vista de lista en la que se hizo clic?

Gracias por adelantado. Atentamente. Jose


private static final int EDIT_ID = Menu.FIRST + 3; private static final int DELETE_ID = Menu.FIRST + 4; @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { menu.add(Menu.NONE, EDIT_ID, Menu.NONE, "Edit").setAlphabeticShortcut( ''e''); menu.add(Menu.NONE, DELETE_ID, Menu.NONE, "Delete") .setAlphabeticShortcut(''d''); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item .getMenuInfo(); switch (item.getItemId()) { case EDIT_ID: edit(info.id); return (true); case DELETE_ID: delete(info.id); return (true); } return (super.onOptionsItemSelected(item)); }


OK, para resolver la información del problema null **** use miembro estático y configure el valor desde la Posición de su titular para guardar el valor en el miembro del método longclick por ejemplo: -

public class CurrentPosition { public static int Pos{ get; set; } } public bool OnLongClick(View v) { CurrentPosition.Pos = Position; return false; }

y use en su contexto elemento seleccionado:

public override bool OnContextItemSelected(IMenuItem item) { switch (item.ItemId) { case 0: return true; case 1: Toast.MakeText(this,CurrentPosition.Pos.ToString(), ToastLength.Long).Show(); return true; case 2: Toast.MakeText(this, "Save", ToastLength.Long).Show(); return true; } return true; } }

C # code