2012-01-25 19 views
11

Sto usando un list adapter per mostrare negozi diversi, quando qualcuno seleziona un negozio li porta a una nuova attività in cui possono aggiungere il negozio ai preferiti su quello schermo.Adattatore Android onResume update list

C'è un pulsante Indietro su quello chiama finish(); che torna alla schermata con il listview.

Ora il problema è il listview non è aggiornato (cioè non mostra che il negozio è già stato aggiunto al preferito). Ho provato questo codice, ma senza fortuna:

@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() chiama l'API server e aggiorna i nomi e gli array di stato.

Con questo codice la lista in realtà non aggiorna ...

+0

http://stackoverflow.com/a/17333384/596555, potrebbe esserti d'aiuto – boiledwater

risposta

29

È necessario impostareAdapter nel proprio onCreate() solo all'interno di onResume(), è sufficiente chiamare adapter.notifyDataSetChanged() con la nuova raccolta di dati. Questo aggiornerà il tuo ListView con la nuova raccolta di dati.

0

Prima di aggiungere nuovo Panorama per listView rimuovere tutti vista precedente

listView.removeAllViews(); 

e quindi aggiungere classe di adattatori con i nuovi valori. Una cosa è assicurarsi che i valori vengano aggiornati mentre si ritorna dalla seconda attività e questo codice sta chiamando.

1

Prima di tutto u bisogno di aggiungere l'elenco dei negozi al ArrayList, presentare questa lista matrice al ADATTATORE quindi aggiungerlo alla visualizzazione dell'elenco

list.setAdapter(adapter); 

esso visualizzerà i negozi elenco; prendi lo onListItemClick clicca qui e otterrai listItem Id; utilizzando l'ID voce dell'elenco u può dare intento come questo

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

Prendere un fagiolo java/setter e getter classe metodi; prendere il metodo getter come statico, impostare il nome del negozio che cosa si è creato nell'attività figlio; metodo di override chiamato onBackPressed(); all'interno di tale metodo scrivere

setResult(RESULT_OK); 
finish(); 

prendere un metodo onActivityForResult() nella classe padre; all'interno di tale metodo

arraylist.add(javabeanClassname.getName()); 

aggiungere che ArrayList al Adapter e scrivere il codice

list.setAdapter(adapter); 
4

di questo codice:

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

Credo che questo vi aiuterà.

Grazie ....

Problemi correlati