ContextMenu no aparece en el clic largo
El menú contextual no aparece en el clic largo de los elementos de la lista en la vista de lista. He ampliado el adaptador de base y he utilizado un titular de vista para implementar la lista personalizada con textviews y un imagebutton.
adapter = new MyClickableListAdapter(this, R.layout.timeline, mObjectList); list.setAdapter(adapter); registerForContextMenu(list);
Implementación de onCreateContextMenu
- Persistencia de un menú de contexto tras la rotación de la pantalla
- Obtener la posición de fila en onCreateContextMenu
- Android: Menú contextual en un solo clic
- El menú de contexto de verificación de Android no se recuerda marcado
- Cómo crear un submenú con botones de radio en Android?
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); Log.d(TAG, "Entering Context Menu"); menu.setHeaderTitle("Context Menu"); menu.add(Menu.NONE, DELETE_ID, Menu.NONE, "Delete") .setIcon(R.drawable.icon); }
El XML para listview está aquí
<ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" />
He estado intentando esto por muchos días. Creo que es imposible registrar Context-menu para una vista de lista personalizada como esta. Corregirme si estoy equivocado (posiblemente con código de ejemplo).
Ahora estoy pensando en agregar un botón al elemento de lista y muestra un menú al hacer clic en él. ¿Es posible de alguna otra manera que usar los cuadros de diálogo?
Cualquier ayuda sería muy apreciada ..
- Cómo crear un menú contextual con un archivo XML?
- Android Studio: No se puede escribir en Preferencias compartidas en la prueba instrumentada
- El lanzamiento de un cuadro de diálogo "No se puede agregar ventana - símbolo nulo no es para una aplicación" con getApplication () como contexto
- Obtener la identificación de la vista de oncontextitemselected
¿Por qué no utilizaste ListActivity
?
En mi ListActivity tengo:
@Override protected void onCreate(Bundle savedInstanceState) { /* setContentView() and all stuff that happens in this method */ registerForContextMenu(getListView()); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); AdapterView.AdapterContextMenuInfo info; try { info = (AdapterView.AdapterContextMenuInfo) menuInfo; } catch (ClassCastException e) { Log.e(TAG, "bad menuInfo", e); return; } Something something = (Subway) getListAdapter().getItem(info.position); menu.setHeaderTitle(something.getName()); menu.setHeaderIcon(something.getIcon()); menu.add(0, CONTEXT_MENU_SHARE, 0, "Do something!"); } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { AdapterView.AdapterContextMenuInfo info; try { info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); } catch (ClassCastException e) { Log.e(TAG, "bad menuInfo", e); return false; } switch (item.getItemId()) { case DO_SOMETHING: /* Do sothing with the id */ Something something = getListAdapter().getItem(info.position); return true; }
Este problema surge en la vista de lista cuando tiene elementos que pueden enfocarse como checkbox, radioButton, etc. Para solucionar esto en el diseño del elemento de lista para los elementos que se pueden enfocar, se incluyen:
android:focusable="false";
Utilice OnItemLongClickListener (a través del método set ~) del ListView.