Android: Acciones múltiples en una vista de lista – problema de enfoque

Me gustaría implementar un ListView, que no puedo hacer ningún problema w / mi cursor. En este momento, dependiendo de la fila en la que hagas clic, te llevará a una nueva actividad basada en la información presionada en esa fila (como debería, y como se esperaba). Quisiera tener un botón sin embargo para suprimir la fila, así que un usuario puede presionar cualquier parte de la fila para lanzar la nueva actividad, pero si presionan el botón en esa fila, suprime la fila (o lanza una actividad de la cancelación / función).

Si usted puede mirar @ DroidRecord, tienen un diseño similar como estoy buscando para lograr.

¡Gracias!

Chris.

¿Cuál es tu pregunta? ¿Cómo agregar un botón a una fila de lista?

Muy simple, tal como esperas, se añadirá al diseño de la fila.

Desafortunadamente, eso también hará que toda la fila sea "intocable". El desarrollador de Google que pedí dijo que esto es por diseño (por lo que recuerdo), y que debe utilizar TouchDelegate para hacer frente a esto. Como no hay muestras, ni siquiera en la fuente de Android, y sólo la documentación muy delgada que no funcionó para mí

De todos modos, parece que no muchas aplicaciones utilizan un botón en la fila de la lista. Sólo sé sobre la mía ( newsrob , ver lista de artículos) y el despertador. Tal vez usted podría utilizar un menú contextual?

De lo contrario la solución fea sería añadir a llamada setOnClickListener () en su vista de fila en el método getView.

Aclamaciones

Como dijo Mariano Kamp, añadir botones a una fila lo hará "intocable", pero en mi experiencia, este problema desaparece si estas propiedades se configuran en los botones:

android:focusable="false" android:focusableInTouchMode="false" 

Véase también Cómo disparar onListItemClick en Listactivity con botones en la lista?

Otra solución posible: puede utilizar un ImageView en lugar del botón y establecer el onClickListener de ImageView (por ejemplo, cuando infla la vista de celda).

ImageView no se puede enfocar, por lo que no impide que OnListItemClick () se envíe, y al hacer clic en la imagen sólo se activa el oyente de la imagen.

No es la respuesta a su pregunta, pero el clic largo / ficha es generalmente el lugar para abrir un menú contextual y poner acciones adicionales, como eliminar. Puedes leer cómo hacerlo aquí: ¿Cómo implementas el menú contextual en ListActivity en Android?

Me gustaría dar las gracias a BoD por su sugerencia sobre la eliminación del estado de focusable a los botones, salvó mi día.

Pero para información, ya que el botón no es más state_focusedstate_focused en <selector> xml -, su diseño no se mostrará más para el usuario.

Esos botones todavía obtendrán el estado pressed , pero también al hacer clic en cualquier otro lugar en la vista principal (en cualquier lugar, pero otro botón)!

Tenga esto en cuenta, no podría ser una buena solución para su propio caso, pero funciona bien.

He intentado esto para poder hacer clic en los botones pero no funcionó para mí android: focusable = "false" android: focusableInTouchMode = "false"

Así que lo que hice fue cambiar el diseño de la actividad a scrollview y luego agregar un linerLayout dentro de él. Después de que usted puede agregar botones a la disposición y cada botón será clickable.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.