2012-01-25 16 views
11

Estoy usando un adaptador de lista para mostrar diferentes tiendas, cuando alguien selecciona una tienda que los lleva a una nueva actividad donde pueden agregar la tienda a favoritos en esa pantalla.Android onResume actualización lista adaptador

Hay un botón Atrás en las llamadas finish(); que vuelve a la pantalla con la vista de lista.

Ahora el problema es que la vista de lista no está actualizada (es decir, no muestra que la tienda ya se haya agregado al favorito). Probé este código, pero sin suerte:

@Override 
public void onResume() { 
    super.onResume(); 
    list.setAdapter(null);  
    updateMyList(); 
    adapter=new LazyAdapter(this, ((String[])names.toArray(new String[0])), 
     ((String[])status.toArray(new String[0]))); 
    list.setAdapter(adapter); 
} 

updateMyList() llama a la API del servidor y actualiza los nombres y las matrices de estado.

Con este código de la lista en realidad no actualizar ...

+0

http://stackoverflow.com/a/17333384/596555, pueden ser de ayuda u – boiledwater

Respuesta

29

Debe establecer Adaptador en su onCreate() solamente, dentro de onResume() solo tiene que llamar al adapter.notifyDataSetChanged() con la nueva colección de datos. Esto actualizará su ListView con la nueva colección de datos.

0

Antes de añadir nueva vista a Listview eliminar todo vista anterior

listView.removeAllViews(); 

y luego agregar la clase adaptador con los nuevos valores. Una cosa es asegurarse de que sus valores se actualicen mientras regresa de la segunda actividad, y este código está llamando.

1

Ante todo u necesidad de añadir la lista de tiendas para el ArrayList, presentar esta lista gama a la ADAPTADOR luego añadirlo a la vista de lista

list.setAdapter(adapter); 

se mostrará las tiendas lista; tomar onListItemClick haga clic allí obtendrá listItem Id; mediante el identificador de lista de elementos u puede dar como esta intención

Intent intent=new Intent(getApplicationContext(),------.class); 
    startActivityForResult(intent); 

Tome un bean Java/setter y getter clase de métodos; tome el método get getter como estático, establezca el nombre de la tienda lo que ha creado en la actividad secundaria; método de anulación llamado onBackPressed(); dentro de ese método de escritura

setResult(RESULT_OK); 
finish(); 

echar un método onActivityForResult() en la clase padre; dentro de ese método

arraylist.add(javabeanClassname.getName()); 

añadir que ArrayList a la Adapter y escribir el código

list.setAdapter(adapter); 
4

Usar este código:

myList.clear(); 
myList.add("your array list items");    
setListAdapter(adapter); 
adapter.notifyDataSetChanged(); 

Creo que esto le ayudará.

Gracias ....

Cuestiones relacionadas