Recuperar texto de un elemento ListView con OnContextItemSelected
Tengo un ListView con un menú de contexto "clásico" con la supresión y las opciones similares. Puesto que estoy suprimiendo de un objeto SharedPreferences, necesito recuperar la llave, que es el conjunto del texto en los artículos de ListView.
He intentado el siguiente código:
- NotifyDataSetChanged () en Fragmento no está actualizando listview
- Android lista ver espacio extra al final cuando se desplaza
- Cómo administrar deshacer después de deslizar para eliminar en android ListView?
- El divisor desaparece del último elemento en listview si se agrega footerview
- Mostrar menú contextual bajo demanda en Android
@Override public boolean onContextItemSelected(MenuItem item){ AdapterContextMenuInfo saved = (AdapterContextMenuInfo) item.getMenuInfo(); TextView view = (TextView)findViewById((int) saved.id); Log.d("DEBUG:", "before key"); String key = view.getText().toString(); Log.d("DEBUG:", "after..."); switch (item.getItemId()){ case R.id.conmenu_delete: return true; case R.id.conmenu_copy: return true; case R.id.conmenu_send: return true; default: return super.onContextItemSelected(item); } }
Pero, por desgracia, se bloquea al intentar recuperar el texto de la vista, como lo sé de los registros.
- El elemento se vuelve más grande al deslizar ListView
- Android: casillas de verificación en un ListView (comportamiento extraño del elemento seleccionado)
- Desplazarse a Cadena específica en el elemento de vista de lista personalizada
- ListView dentro de ScrollView no se desplaza en Android
- ¿Cómo actualizar ListView dinámicamente?
- Adición dinámica de elementos a la vista de lista mediante el adaptador personalizado para la aplicación de Android
- Android - Agregar y mostrar elementos a ListView uno a la vez usando un ArrayAdapter
- Los elementos ListView no se pueden hacer clic. ¿por qué?
Ya ha AdapterContextMenuInfo
correctamente el AdapterContextMenuInfo
.
A partir de ahí, puede obtener el targetView que puede convertir de nuevo en el widget. Supongo que es un TextView
en tu caso. En ese TextView
puede llamar al getText()
simple getText()
.
@Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); String key = ((TextView) info.targetView).getText().toString(); switch (item.getItemId()){ case R.id.conmenu_delete: return true; case R.id.conmenu_copy: return true; case R.id.conmenu_send: return true; default: return super.onContextItemSelected(item); } }
Si su lista está poblada con objetos personalizados, obviamente tiene que convertirlo al tipo respectivo, por ejemplo:
Person person = (Person) getListAdapter().getItem(info.position); String key = person.getName();
@Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); Object obj = getListView().getItemAtPosition(info.position); String title = obj.toString(); }
- Problema que coincide con el patrón regex en Android
- Realizar búsqueda en Android dentro de la misma actividad