2009-02-01 15 views
8

que me gustaría implementar un ListView, que puedo hacer ningún problema w/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).Android: varias acciones en una vista de lista - Enfoque Edición

Si usted puede mirar @ DroidRecord, tienen un diseño similar a la persona que estoy buscando achive.

Gracias!

Chris.

Respuesta

4

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

muy simple, al igual que usted espera que se añadirá a la disposición de la fila.

Lamentablemente, sin embargo, que también hará que toda la fila "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 muy delgada documentation 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 solución fea sería añadir a llamar setOnClickListener() en su vista de primera fila en el método getView.

Saludos

+0

¿Podría explicar cómo configurarlo en la vista de filas? Mi fila se dibuja como parte de la función de datos de relleno que llamo que usa SimpleCursorAdapter (esto, R.layout.row_detail, c, from, to); Qué método debo anular para establecer un escucha onclick. Cuando lo pruebo en mi método de creación, mi aplicación falla. – Chrispix

+0

Disculpe, no estoy familiarizado con SimpleCursorAdapter ... Utilizo BaseAdapter directamente, pero SimpleCursorAdapter debería funcionar más o menos igual. Al mirar la documentación, sospecho que bindView es el método adecuado para usted. Obtiene la vista (vista de hilera) pasada allí. –

+0

continued .... Para ver por qué su aplicación falla (e incluirla en la descripción del problema) puede usar "adb -e logcat". Eso le mostrará el archivo de registro del emulador en ejecución. –

6

Otra posible solución - se puede utilizar un ImageView en lugar del botón, y establecer OnClickListener del ImageView (Por ejemplo, cuando se está inflando el punto de vista celular).

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.

0

Me gustaría dar las gracias BoD por su hint en la eliminación del estado focusable al botón (s), salvó mi día.

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

Sin embargo, esos botones seguirán obteniendo el estado pressed, 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.

0

yo probamos este sea capaz de hacer clic en los botones, pero no funcionó para mí androide: enfocable = "false" androide: focusableInTouchMode = "false"

así que lo que hice fue cambiar el diseño de la actividad a scrollview y luego agrega un linerLayout dentro de él. después de eso, puede agregar botones al diseño y se podrá hacer clic en cada botón.

Cuestiones relacionadas