Autore Topic: Aggiornare una ListView dopo aggiornamento del Database  (Letto 3108 volte)

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Aggiornare una ListView dopo aggiornamento del Database
« il: 09 Novembre 2010, 19:28:00 CET »
+3
Oggi mi sono imbattutto in un processo un po macchinoso ma interessante:
Applicazione che si apre e mostra una TextView e poi una ListView, utilizzando il codice di Qlimax http://www.anddev.it/index.php/topic,856.0.html

Ho modificato un po la mia ListView in modo da mostrare piu cose.
All'inizio il db è vuoto, verrà riempito dopo aver scaricato e parsato un JSON da internet, quindi finchè non ci sono i dati, il programma rimane aperto ma con lista vuota:



Il codice di aggiornamento viene quindi chiamato dall'handler che gestisce la risposta al thread di download; l'handler chiamerà la updateLv() all'interno dell'activity:

Codice (Java): [Seleziona]
private void updateLv(){
                TextView productsTv = (TextView) findViewById(R.id.productsTv); //La text view che mostra il numero di elementi
                db.open(); //apriamo il database (dato che lo chiudo durante l'esecuzione, non amo tenerlo aperto se non lo uso)
                Cursor c = db.fetchUtenti(); // query per ottenere gli utenti
                startManagingCursor(c); //non so se effettivamente serve
                SimpleCursorAdapter adapter = ((SimpleCursorAdapter) productsLv.getAdapter()); //prendo l'adapter dalla listview
                adapter.changeCursor(c); //dico all'adapter di usare il cursor nuovo (la requery non funziona se il database viene chiuso e riaperto, quindi bisogna prenderne uno nuovo)
                adapter.notifyDataSetChanged(); //notifichiamo alla ListView che son cambiati i dati
                db.close(); //chiudiamo il DB che non usiamo piu
//modifichiamo la textView se il cursor c'è e ha dentro qualcosa...
                if (c!=null && c.getCount()>0) {
                        c.moveToFirst();
                        productsTv.setText("Database SISP, Tabella " + Variables.UtentiMD.UTENTI_TABLE + ", Numero di Record: "
                                        + c.getCount() + "\n");
                }
                System.out.println("Cursor requeried: count"+c.getCount()); //Riga di debug
        }

fatto ciò, ottengo la nuova ListView a schermo, fatta così:




PS:I dati mostrati sono inventati, se combaciano con utenti veri, è un puro caso...

Saluti!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Aggiornare una ListView dopo aggiornamento del Database
« Risposta #1 il: 10 Novembre 2010, 21:49:35 CET »
0
Potresti fare un tutorial completo in modo da evidenziare la chiamata http, il parsing json e la chiamata cross-thread :)

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Aggiornare una ListView dopo aggiornamento del Database
« Risposta #2 il: 10 Novembre 2010, 22:42:14 CET »
0
Potresti fare un tutorial completo in modo da evidenziare la chiamata http, il parsing json e la chiamata cross-thread :)
buona idea, dovrei però prima trovare un server che mi da un esempio di json, non posso postare quello che ho qui perchè è per un progetto di ricerca/lavoro....
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Aggiornare una ListView dopo aggiornamento del Database
« Risposta #3 il: 10 Novembre 2010, 22:51:41 CET »
+1
Puoi metterlo su pastebin.ca e usare il link della versione "raw"...
« Ultima modifica: 10 Novembre 2010, 22:53:24 CET da Ricky` »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Aggiornare una ListView dopo aggiornamento del Database
« Risposta #4 il: 10 Novembre 2010, 23:15:22 CET »
0
Puoi metterlo su pastebin.ca e usare il link della versione "raw"...
Bello!!
non lo conoscevo! è ottimo!!!
tipo questo...
http://pastebin.ca/raw/1987581

Se arrivo entro il weekend mi metto sotto :D
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Aggiornare una ListView dopo aggiornamento del Database
« Risposta #5 il: 12 Novembre 2010, 18:08:19 CET »
0
ho appena finito di fare il tutorial,se riesco domattina lo posto, altrimenti domenica o lunedi
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Aggiornare una ListView dopo aggiornamento del Database
« Risposta #6 il: 12 Novembre 2010, 18:46:30 CET »
0
Ottimo :D
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !