PDA

Ver la Versión Completa : Actualización de un listview


Walnow
28/01/15, 13:20:51
Hola, tengo la siguiente duda. Tengo una primera activity con un listview que me muestra las categorias que están almacenadas en una base de datos mediante un ArrayAdapter.

Por otro lado tengo una segunda activity con los edittext que la uso para crear o modificar los registros.

En la primera activity en oncreate cargo los datos de la base de datos, creo el adapter y se lo asigno al listview.

El problema con el que me encuentro es cuando doy de alta un nuevo registro no se actualiza el listview (porque lo hago en oncreate)

La solución podría ser cerrar la primera activity al abrir la segunda y al cerrar la segunda volver a abrir la primera para que entrase por OnCreate.

Otra podría ser volver a meter todo lo que tengo en oncreate en el evento al volver a mostrar la primera (con esto no me haría falta cerrar la primera activity)

Supongo que la forma correcta es avisar al adapter miediante notifyDataSetChanged que ha habido un cambio dentro del arraylist que se lo he pasado al constructor pero la única forma que se me ocurre la estar en una activity diferente es pasasr de la segunda a la primera el registro introducido por el usuario para añadir el registro al arraylist (en la primera activity) y notificar al adpater del cambio. Esto es lo correcto, cual es la mejor forma de hacerlo?

kriogeN
28/01/15, 13:47:57
Puedes notificar el cambio en el Adapter en el onResume, así cada vez que vuelvas a entrar en la primera Activity se actualizará el ListView.

Walnow
28/01/15, 13:53:00
Pero entonces desde la segunda activity tengo que retornar los nuevos valores para modificar el arraylist y entonces notificar el cambio al adapter

Walnow
28/01/15, 16:11:20
No soy capaz de pasar los parametros de la segunda activity a la primera para capturarlo en OnResume. La unica forma es mediante un intent y un startActivity pero con esto entro en oncreate.

kriogeN
28/01/15, 19:10:21
Si quieres recoger en la primera Activity algo que haces en la segunda, tendrás que lanzar a la segunda con startActivityForResult, en la segunda hacer un setResult con un Intent, y en la primera recuperar ese Intent en onActivityResult.

En Android no puedes pasar referencias de una Activity a otra y esperar que esa referencia se conserve cuando vuelvas a la Activity original, ya que puede haberse destruido y se tenga que regenerar.