Duda Aplicación Android

N1Tr0s

Buenas, os expongo mi situación:
Tengo que hacer una aplicación android que consiste en una serie de Test (Pregunta 1: elegir respuesta A, B o C, Pregunta 2.... ).
Estos test se corrigen y se guarda una puntuación.
Dependiendo de la puntuacion de todos los Test que se vayan haciendo se desbloquean nuevos Test, etc...

Mi duda es ¿Como puedo guardar los datos de los resultados de los test, etc...?

B

¿Qué tipo de datos quieres guardar?

Si son cuatro cosas (imagínate, los niveles que tiene el usuario desbloqueado) puedes y debes usar las SharedPreferences.

En caso de tener que guardar cada test con sus respuestas, te vendría bien utilizar SQLite. Puedes utilizar también ormlite o algún otro ORM para Android (yo estoy con ormlite y al menos para cosas pequeñas va bien).

Saludos ;)

1 respuesta
N1Tr0s

#2 muchas gracias, por el momento solo quiero guardar la puntuacion por cada test, una puntuacion global ( %progreso total) y los niveles a los que se puede acceder. Para eso con SharedPreferences espero que sea suficiente ^^

1 respuesta
B

#3: Pues sí, te lo recomiendo. Es muchísimo más sencillo. SQLite ya implica un poco de trabajo solo para dejarlo funcional.

Puni

El problema de las sharedpreferences es que se guardan incluso desinstalado la aplicación. A veces eso da problemas. Pero sí, si son 4 cosas no te lies con SQLite que no te compensa.

2 respuestas
N1Tr0s

#5 Gracias a ti tb, el martes o el miercoles dire algo, que de momento estoy de vacaciones ^^

Tig

#5 eso no es así, todo lo que hay en /data/data/nombre.del.paquete se borra al desinstalar la aplicación

Hay un bug hasta 2.2 que hace que no se borre el contenido en external storage (/sdcard/Android/nombre.del.paquete) al desinstalar, pero creo que en la 2.3 ya está corregido

Puni

Ahora que lo pienso di por sentado que se mantenían al desinstalar y no lo he comprobado realmente. Lo que si sé es que mientras desarrollas las mantienes entre diferentes ejecuciones de la app, hayas cambiado cosas o no. O sea que más bien mantendrías las preferences al reinstalar, lo cual da bastante por el culo desarrollando para poner unas por defecto en una instalación nueva.

2 respuestas
xCoNDoR

Utiliza una base de datos (?)

1 respuesta
B

#8: Yo aprovecho mis tests para resetear la BD y pista.

#9: Utilizar una base de datos es un coñazo y no vale la pena si no guardas algo complejo, creo yo.

1 respuesta
Tig

#8 eso es porque desarrollando se instalan las aplicaciones con la opción '-r' (o algo así), que es una reinstall sin borrar los archivos privados de la aplicación

#1 diría que las preferencias te pueden servir para el diseño inicial, pero a poco grande que se haga la aplicación se quedarán insuficientes muy pronto. Tiene razón #10 que es un coñazo lo de las bases de datos, pero también es verdad que si tienes bastantes tests te acabarás volviendo loco manejando arrays de strings

1 respuesta
N1Tr0s

#11 asi de primeras, son 10 test de 10 preguntas y guardar los "progresos". nada mas ^^ ya contaré

2 respuestas
Tig

#12 mi recomendación es que guardes los datos en formato JSON, de manera que un test quedaría parecido a esto

{
"nombre" : "test 1",
 "preguntas" :
[
{"titulo" : "pregunta primera",
"respuestas" : [ "respuesta 1", "respuesta 2", "respuesta 3"]
"respuesta_correcta" : "1"},
{"titulo" : "pregunta segunda",
"respuestas" : [ "respuesta 1", "respuesta 2", "respuesta 3"]
"respuesta_correcta" : "2"}
]
}

Luego puedes decidir trabajar con objetos (que se crean a partir del json) o directamente con json y te ahorras el parseo.

2 2 respuestas
B

#12: La verdad es que la aproximación de #13 es la mejor opción porque no veo las SharedPreferences demasiado bien para esto.

Además puedes añadirle internacionalización facilmente.

N1Tr0s

Bueno, de momento este proyecto parece que se va a aplazar... cuando tenga algo de info ya me pasare a comentar.
Muchas gracias a todos

N1Tr0s

Bueno, esto parece que sale adelante, para guardar los test voy a usar lo que me recomendó #13 (gracias de nuevo).
Ahora la cosa se ha complicado (en cuanto a respuestas de los test), pues piden 3 tipos de respuesta:

  • Eligiendo una opción de entre varias (eso ya estaba)
  • Mediante texto (escribir tu la respuesta y que te corrija)
  • Drag and drop de varias respuestas (ej. tienes 4 respuestas y las tienes que colocar en orden)
    El principal problema le veo en el Drag and drop, ¿alguien me puede arrojar algo de luz con este tema? porque la verdad que estoy muy perdido con eso, he estado buscando y no he encontrado nada de momento

edit: perdon por doble post

1 respuesta
Tig

#16 Tendrás que mirar los Gestures (http://developer.android.com/resources/articles/gestures.html)

Nunca los he tocado, mucha suerte :-)

1

Usuarios habituales