Autore Topic: aggiornare ui  (Letto 501 volte)

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
aggiornare ui
« il: 11 Ottobre 2010, 14:31:22 CEST »
0
ciao a tutti,
sto cercando di aggiornare i valori di una listview popolata tramite un SimpleAdapter, tramite dunque un ArrayList di più HashMap, che prende dei valori precedentemente memorzzati con SharedPreferences.

ho pensato di forzarne il refresh tramite notifyDataSetChanged() ma non funziona come mi aspetterei...
credendo quindi che fosse necessario modificare esplicitamente il valore di una HashMap dell'ArrayList dell'adapter (con dei cicli che cercano il valore) per fare in modo che notifyDataSetChanged() si accorgesse di dover intervenire... ho tentato anche questa strada ma senza apparente successo.

ho pensato poi di ricreare la ListView e sostituirla per intero ma, nonostante non sembri il metodo più performante, non trovo come fare... se chiamo nuovamente listview.setAdapter() mi appende una seconda ListView.

infine, siccome i valori con cui viene popolata l'interfaccia sono memorizzati con SharedPreferences, ho provato anche achiamare semplicemente listview.invalidate() per cercare di forzarne il redraw.

avete suggerimenti?
grazie mille!

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
Re:aggiornare ui
« Risposta #1 il: 12 Ottobre 2010, 13:48:03 CEST »
0
Citazione
ho pensato poi di ricreare la ListView e sostituirla per intero ma, nonostante non sembri il metodo più performante, non trovo come fare... se chiamo nuovamente listview.setAdapter() mi appende una seconda ListView

ho risolto.
ho provato nuovamente a ricreare la ListView e stavolta ha funzionato, evidentemente sbagliavo qualcos'altro.

Codice (Java): [Seleziona]
private void createView() {
        ListView listview = getView();
        SimpleAdapter adapter = createAdapter(); // creo l'adapter a partire dalle SharedPreferences
        listview.setAdapter(adapter);
}

protected void updateView() {
        createView();
}

sicuramente esistono strade più adatte per farlo ma, dato che:
  • salvo i dati nelle SharedPreferences e da lì li leggo per creare l'adapter;
  • anche la rotazione del telefono comporta distruzione e nuova creazione dell'activity;
l'ho preferito a metodi più tortuosi.

grazie comunque. :)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:aggiornare ui
« Risposta #2 il: 12 Ottobre 2010, 13:49:46 CEST »
0
Se posso permettermi un obiezione ti consiglio di utilizzare un metodo più efficiente per fare quello che ti serve. In questo modo vai a ricreare ogni volta il tutto :S

Offline lo

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
Re:aggiornare ui
« Risposta #3 il: 12 Ottobre 2010, 13:56:38 CEST »
0
certo... ma è quello che succede anche quando ruoti il telefono no?
quindi meno performante sì, ma forse non infattibile...

ho cercato di farlo in altri modi ma senza successo (in realtà mi manca l'utilizzo del DataObserver);
quando saprò muovermi meglio in android, ripenserò la mia scelta :)