Autore Topic: ListView con molte righe  (Letto 885 volte)

Offline fermat

  • Utente junior
  • **
  • Post: 93
  • Respect: +1
    • Mostra profilo
    • Mattepuffo.com
ListView con molte righe
« il: 26 Ottobre 2013, 11:21:23 CEST »
0
ciao!

attraverso un web service prendo i dati in formato json, e li salvo in file locale sul dispositivo nello stesso formato.
poi leggo i dati dal file e riempio una listview.

tutto ciò mi funziona bene tranne in una app, dove i record che mi tira fuori il web service sono quasi 900.
in questo caso la app è un pò rallentata nel caricamento della listview.
siccome i record continueranno a crescere, vorrei trovare una soluzione a questo inconveniente.
avete qualche suggerimento in proposito?

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:ListView con molte righe
« Risposta #1 il: 26 Ottobre 2013, 11:39:49 CEST »
0
Molto dipende da cosa effettivamente usi (arrayAdapter?) e come/quando effetti il download dei dati (quando apri la list?) e dalla frequenza con la quale devi aggiornare i dati dal web service.

Le soluzioni possono essere diverse in base alle esigenze sopra.

Ipotizzando che scarichi il file quando apri la lista , e crei un arrayAdapter contestualmente (quindi uno dei scenari più lenti) potresti fare questo:
1- fai un primo download di 50 righe
2- esegui un parser di questi dati e aggiorni l'arrayAdapter notificando la listview. In questo modo l'utente ha a video dei dati in tempi brevi.
3- con un Async (o cmq un thread) esegui il download del file completo e aggiorni il tuo arrayAdapter -> listView

Le altre soluzioni possono essere quelle di scaricare il file in un momento diverso dall'apertura della list (qui le soluzioni sono diverse), usare aggiornamenti progressivi invece che un unico file, memorizzare i dati su db, in modo da poter usare un cursorAdapter....

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:ListView con molte righe
« Risposta #2 il: 26 Ottobre 2013, 11:51:36 CEST »
0
Come dice GabMarioPower dipende molto dalla natura dei dati e dalla frequenza di questo download/aggiornamento. E ti ha già presentato le varie opzioni per la gestione dei vari casi.

Io aggiungo solamente che, vedendo le varie app che hanno a che fare con liste lunghissime di item (mi riferisco a gmail, twitter e così via), il pattern usuale è di presentare nella lista i primi N item, con N per esempio pari a 50. Poi quando viene raggiunta la fine della lista, si provvede ad aggiungerne altri N.

Questo è valido sia che tu scarichi tutti gli item la prima volta, sia che tu effettivamente scarichi i nuovi item solo quando richiesto dall'utente.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline fermat

  • Utente junior
  • **
  • Post: 93
  • Respect: +1
    • Mostra profilo
    • Mattepuffo.com
Re:ListView con molte righe
« Risposta #3 il: 26 Ottobre 2013, 12:06:06 CEST »
0
ciao!

intanto grazie per le risposte.

in genere non riscarico tutto il file, per farlo ho un pulsante apposito.
quindi per rispondere alle vostre domande:
-l'aggiornamento della lista è manuale e quindi dipende dall'utente quando aggionare il tutto
-il file è già presente quando la app si avvia, e in avvio viene caricata la ListView ed ho usatp un SimpleAdapter

quindi potrei fare una cosa del genere volendo:
-il file lo scarico sempre completo
-in avvio di app prendo solo i primi 50
-mano che arrivo alla fine della lista aggiungo altri record

potrebbe essere una buona soluzione?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:ListView con molte righe
« Risposta #4 il: 26 Ottobre 2013, 12:13:22 CEST »
0
Secondo me si.

Anche qua sul forum c'è un tutorial (di Nicola_D) che tratta le liste senza-fine ( [facile] Endless List, Una lista senza fine - Android Developers Italia ). E usando le stesse keyword trovi altro materiale in rete.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Nicola_D

  • Moderatore
  • 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:ListView con molte righe
« Risposta #5 il: 26 Ottobre 2013, 13:23:34 CEST »
0
ho letto velocemente i commenti, ma non ho capito, è lenta l'app PRIMA di vedere la listview, o mentre la scorri?
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 fermat

  • Utente junior
  • **
  • Post: 93
  • Respect: +1
    • Mostra profilo
    • Mattepuffo.com
Re:ListView con molte righe
« Risposta #6 il: 26 Ottobre 2013, 14:54:11 CEST »
0
ciao!

principalmente prima di vedere la lista.
nel senso che ci mette un po a caricarla.
poi una volta caricata nn è lenta nello scorrerla!