Autore Topic: Refresh ListView ogni tot secondi  (Letto 824 volte)

Offline drthief

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Refresh ListView ogni tot secondi
« il: 06 Settembre 2010, 18:25:20 CEST »
0
Salve a tutti, spero di aver azzeccato la sezione  :-P

Ho un problemino... Effettuo il parsing di dati da una sorgente xml e la inserisco tramite un SimpleAdapter in una listView. Questi dati variano sul server continuamente e vorrei sempre tenere aggiornata la listView magari ri-effettuando il parsing ogni tot secondi.

C'è una soluzione a ciò?

Satuti  o_O

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +203
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7

Offline drthief

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Re:Refresh ListView ogni tot secondi
« Risposta #2 il: 08 Settembre 2010, 10:31:57 CEST »
0
Risolto semplicemente andando a creare una classe
Codice: [Seleziona]
Runnable mUpdateTimeTask = new Runnable() {
        public void run() {
                Log.v("cicla ogni 2 sec");
                populateList(); //questa funzione mi fa il parsing e mi popola il listAdapter
                setListAdapter(adapter);
                mHandler.postDelayed(this, 2000);
        } 
 };

e dentro il metodo on create

Codice: [Seleziona]
mHandler.postDelayed(mUpdateTimeTask, 2000);

;-) graazie per l'input  :-P


Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Refresh ListView ogni tot secondi
« Risposta #3 il: 08 Settembre 2010, 10:43:15 CEST »
0
Da come lo vedo scritto sembra un ciclo infinito... ricordati che devi manualmente stoppare l'handler nel metodo onStop dell'activity! ;)

Offline drthief

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Re:Refresh ListView ogni tot secondi
« Risposta #4 il: 08 Settembre 2010, 10:46:41 CEST »
0
Siccome a me non serve, serve proprio un ciclo infinito per poter visualizzare i dati sempre aggiornati, non l'ho implementato di proposito  O:-)

Ovviamente se a qualcuno serve adottare questa soluzione ma in modo da fare il refresh "manuale" o stoppare dopo un certo tempo allora meglio seguire le guide sopra  :D

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Refresh ListView ogni tot secondi
« Risposta #5 il: 08 Settembre 2010, 10:56:46 CEST »
0
Mi sono spiegato male...

Quando esci dall'applicazione o quando l'activity non è visibile tu continui ad aggiornarla!

Questo ti può causare due tipi di problemi:
  • Un NullPointerException visto che tenti di aggiornare una cosa che non esiste più;
  • Un utilizzo della batteria per una operazione di aggiornamento di una UI non visibile (quindi una operazione inutile).

Mi sta bene che aggiorni con un ciclo infinito i dati quando l'activity è visibile, ma mi sembra assurdo farlo mentre l'activity non è visibile o, peggio, quando sei uscito completamente dall'applicazione!

Offline drthief

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Re:Refresh ListView ogni tot secondi
« Risposta #6 il: 08 Settembre 2010, 11:03:17 CEST »
0
Si hai ragione, avevo dimenticato questo aspetto...

Già che ci siamo, non mi sono ancora documentato, ma c'è un modo per mandare notifiche dal server e riceverle sul dispositivo (le push notification di iPhone) o funzionano solo in locale?

Mi spiego meglio.... se esistono le notifiche push, allora posso stoppare il refresh e lasciare che sia il server ad avvisarmi quando sussiste una certa condizione, nel secondo caso invece devo invece sapere quando questa condizione è soddisfatta.  :-\

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Refresh ListView ogni tot secondi
« Risposta #7 il: 08 Settembre 2010, 11:26:10 CEST »
0
Già che ci siamo, non mi sono ancora documentato, ma c'è un modo per mandare notifiche dal server e riceverle sul dispositivo (le push notification di iPhone) o funzionano solo in locale?

Si! Ma solo per android 2.2. Richiede inoltre che l'utente abbia un account Google.


Android Developers Blog: Android Cloud To Device Messaging