android - borrosa - camara note 4 no enfoca
Android: mĂșltiples acciones en una vista de lista-Problema de enfoque (6)
¿Cuál es tu pregunta? ¿Cómo agregar un botón a una fila de la lista?
Muy simple, tal como espera, se agregará al diseño de la fila.
Desafortunadamente, eso también hará que toda la fila sea "intocable". El desarrollador de Google que le pregunté dijo que esto es por diseño (por lo que recuerdo) y que debe usar TouchDelegate para lidiar con esto. Como no hay muestras, ni siquiera en la fuente de Android, y solo documentación muy delgada que no funcionó para mí
De todos modos, parece que no muchas aplicaciones usan un botón en la fila de la lista. Solo sé sobre el mío ( newsrob , vea la lista de artículos) y el despertador. ¿Tal vez podrías usar un menú contextual?
De lo contrario, la fea solución sería agregar a la llamada setOnClickListener () en su vista de fila en el método getView.
Aclamaciones
Me gustaría implementar un ListView, que no puedo hacer ningún problema con mi cursor. En este momento, dependiendo de la fila en la que haga clic, lo lleva a una nueva actividad basada en la información que se presiona en esa fila (como debería y como se esperaba). Sin embargo, me gustaría tener un botón para eliminar la fila, por lo que un usuario puede presionar cualquier parte de la fila para iniciar la nueva actividad, pero si presiona el botón en esa fila, elimina la fila (o inicia una actividad de eliminación / función).
Si puedes mirar @DroidRecord, tienen un diseño similar al que yo busco alcanzar.
¡Gracias!
Chris.
Otra solución posible: puede usar ImageView en lugar del botón y establecer ImageView en onClickListener (por ejemplo, cuando está inflando la vista de celda).
ImageView no se puede enfocar, por lo que no impide que OnListItemClick () se envíe, y cuando hace clic en la imagen solo se activa el oyente de la imagen.
Intenté esto para poder hacer clic en los botones pero no funcionó para mí android: focusable = "false" android: focusableInTouchMode = "false"
entonces lo que hice fue cambiar el diseño de la actividad a scrollview y luego agregar un linerLayout dentro de él. después de eso, puede agregar botones al diseño y se podrá hacer clic en cada botón.
Como dijo Mariano Kamp, agregar botones a una fila lo hará "intocable", pero en mi experiencia, este problema desaparece si configuras estas propiedades en los botones:
android:focusable="false"
android:focusableInTouchMode="false"
Consulte también Cómo activar onListItemClick en la Lista de acciones con los botones en la lista?
Me gustaría agradecer a BoD por su sugerencia de eliminar el estado focusable
de los botones, me salvó el día.
Pero para información, dado que el botón ya no se puede state_focused
- state_focused
en <selector> xml -, su diseño ya no se mostrará al usuario.
Sin embargo, esos botones seguirán pressed
el pressed
estado, pero también al hacer clic en cualquier otro lugar en la vista principal (¡en cualquier lugar PERO en otro botón)!
Tenga esto en cuenta, no podría ser una buena solución para su propio caso, pero funciona bien.
No es la respuesta a su pregunta, pero la pestaña / clic largo generalmente es el lugar para abrir un menú contextual y realizar acciones adicionales, como eliminar. Puede leer cómo hacerlo aquí: ¿Cómo implementa el menú contextual en ListActivity en Android?