entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Cargar datos en activity y pasarlos con intent para aplicación Android

Hola. Quería pedir consejo. Estoy creando una aplicación para Android que conecto a una base de datos para cargar los datos. Tengo tres activitis, una digamos que es la presentación con un progressbar, otra que carga un listview con opciones y otra que carga la opción que ha escogido. Los datos que cargo de la BD los necesitaré en la última activity, pero he decido cargar los datos en la primera acitivity, ya que la última ya tiene suficientes cositas como para cargarla más. Mi idea es cargarlo en la primera y pasar los datos a la ultima activity con un intent.
Mi problema es como plantearlo. Me explico. La estructura de la BD sería la siguiente:
enter image description here

Si yo lo cargase todo en un array de tres dimensiones, con un intent tendría suficiente para enviarlo todo junto. Pero los arrays no son dinámicos, y tendría que darle una dimensión fija. Pero los datos no son fijos, pueden tener mas o menos canciones.
Otra manera que he pensado es la de crear varios ArrayList de objetos, uno por cada estilo musical. Cada ArrayList contendria varios Objetos de tipo Canción, y este objeto constaria de los campos................ Pero con esto tendría que crear varios intent para enviar cada ArrayList, tantos como estilos musicales haya.
Estoy muy indeciso, y no quiero elegir mal y que tenga que comenzar de nuevo por que mi elección no haya sigo la más correcta.
Alguna sugerencia??????

0voto

Peter comentado

Por favor utiliza títulos descriptivos en las preguntas, poner "Ayuda", "Consejos", "Como se hace" y demás, no ayudan en nada a saber de que se tratan las cosas. Lo mismo con las etiquetas. Ya edite tu pregunta para que tuviera más sentido y con las etiquetas correctas.

Saludos.

0voto

nachito777sk comentado

Hola de nuevo.
Me ha surgido un problema y ya no veo manera de solucionarlo (he probado de todo).
Hice la clase parcelable. En el primer activity envío este array de objetos. En el segundo activity envío un entero, y los debo recoger en el tercer activity.
Y resulta, que me da un error al recoger el entero, y se cierra la aplicación nada más abrirse, cosa que no entiendo, ya que el error que me sale es del tercer activity, que no llega a realizarlo. Si comento la línea de recoger el entero en el terce activity, no me sale error, y además me pasa el array con los objetos peféctamente. Pero necesito también el entero del segundo activity.
Dejo el código a ver que os parece.
Envío del array de ob. Primer Activity

         //creamos el intent y le pasamos la clase a mostrar

Intent intento = new Intent(SplashScreen.this, MainActivity.class);
Bundle contenedor= new Bundle();
//le cargamos al bundle un objeto parceable que se almacenara
//bajo la key "array" y contendrá nuestra lista
contenedor.putParcelable("array",lista_musica);
//cargamos el intent con el bundle
intento.putExtras(contenedor);
//lanzamos el intent
startActivity(intento)

Envío del entero Segundo Activity

Intent ii=new Intent(Generos.this,MainActivity.class);
ii.putExtra("sentGeneroId", generoId);
startActivity(ii);

Recoger datos en el Tercer Activity

Bundle b = getIntent().getExtras();
if (b != null) {
lista_musica = b.getParcelable("array");
generoId = (Integer) b.get("sentGeneroId");
}

    Log.i("mi error","el generoID: "+generoId);

    Log.i("mi error","el ARRAY del main: "+lista_musica);

La clase Parcelable no creo que este mal, como ya digo comentado la línea generoId = (Integer) b.get("sentGeneroId"); no me da error y me envía correctamente el array de objetos. He probado de todo. Logré que no me saliera el error sin comentar esa línea, pero el array en el tercer activity era siempre null, pero ya no se ni lo que hice.............
Ha ver si alguien con más vista que yo sabe por que da error.
Gracias.

0voto

Peter comentado

Abre otra pregunta, por favor no pongas mas preguntas diferentes dentro de la misma pregunta y como respuesta porque pierde sentido tu pregunta original. Cuando abras la pregunta nueva, borro esta que convertí en comentario.

0voto

CarmaZone comentado

Primero de todo (si no lo has hecho), creo que deberías poner breakpoints e ir depurando para ver qué valores envias/recibes y en qué línea falla.

Con respecto a tu problema creo que no lo estás recogiendo bien, prueba a usar intent.getExtras.getInt() o intent.getIntExtra().

1 Respuesta

4votos

CarmaZone Puntos1110

Creo que tienes mal planteada la base de datos, no tienes que tener X tablas de estilos. Debes tener estilos y canciones. http://gyazo.com/b44fbc8e620467cce8d21090f765ed5f

1º Pantalla:

  • Cargar los estilos
  • Recoger idEstilo pulsado
  • Pasar id con intent.

2º Pantalla:

  • Recoger idEstilo
  • Seleccionar las canciones con ese idEstilo

Los datos los guardas en un ArrayList -> List<Miclase> miclase = new ArrayList<MiClase>, con lo que tendrás un objeto de lista que contiene objetos (estilos o canciones). A MiClase me refiero a tu POJO, tu clase plana con getter, setters.

Luego si tienes una lista de canciones y quieres pasarla a otra activity para algo pasas el objeto canción usando un intent, pero recuerda, en Android no se pueden pasar objetos entre actividades a no ser que tu clase implemente Parcelable, para ello hay una web que te la construye: http://www.parcelabler.com/

Ya depende de tí en qué pantalla hacer la carga y paso de cada dato.

Salu2!!!

0voto

Nara comentado

Podes utilizar JSON para pasar como string un objeto.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta