|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
ListView Con checkbox
Hola a todos, soy nuevo por aqui y queria ver si alguien me puede echar una mano con un problemilla que tengo porque estoy desesperado.
Tengo una aplicación que realiza una búsqueda en una base de datos a partir de una palabra clave que pone el usuario y muestra la información en un listview. Básicamente ordena los datos a partir de una plantilla que he generado yo en un xml mediante un simplecursoradapter. El problema viene que cuando selecciono uno de los checkbox de la listview, solo interpreta que funciona el primer checkbox, ignorando si el resto de los checks están o no marcados. aqui pongo el codigo donde creo que tengo el error: public void AnyadirProdLista() { // TODO Auto-generated method stub ListView lista = (ListView) view.findViewById(R.id.ListaProds); int contador = lista.getCount(); for (int i = 0; i < contador; i++){ CheckBox check = (CheckBox) lista.findViewById(R.id.checkLista); if (check.isChecked()){ Toast.makeText(getActivity(), "a" + i, Toast.LENGTH_LONG).show(); } } } También adjunto una imagen del programa, en el cual se ve el listview. Listaproblema.jpg Gracias por anticipado por vuestra ayuda |
|
#2
|
||||
|
||||
El problema está aquí:
CheckBox check = (CheckBox) lista.findViewById(R.id.checkLista); Haciendo esto SIEMPRE va a encontrar sólo el primer elemento que esté en el ListView que se llame checkLista. Yo lo que hago es establecer un CheckedChange en el que cuando marco un CheckBox añado el campo que me interesa a una lista, y cuando lo desmarco lo elimino de la lista. Al final cuando pulsas el OK recorro esa lista que son los elementos marcados. Haciéndolo como quieres tú tendrías que recorrer el ListView, buscando todos los elementos que se llamen checkLista, y además haciéndolo de forma recursiva. Usando getChildCount() y getChildAt(posicion). Un lío. Mucho más fácil la opción que te he puesto antes. |
#3
|
||||
|
||||
Vaya, gracias, pero me podrías explicar un poco mejor como hacer esto que me indicas? en android soy un poco novato todavía. Si pudieses hacerme un pequeño ejemplo o una explicación rápida de como hacer esto me iría de fábula.
Por lo que he entendido sería poner un evento checkedchanged y añadir los valores que me interesen a una "lista virtual" no? |
#5
|
||||
|
||||
Con el baseAdapter te refieres a la clase para gestionar la base de datos? porque en principio no uso un método getView().
Como ya dije soy nuevo en android y voy bastante pez con lo de las clases y los metodos nativos de android... todo lo que llevo hecho es básicamente gracias a tutoriales que adapto a mis necesidades jejeje. |