Autore Topic: salvataggio in maniera persistente di un arrayList  (Letto 370 volte)

Offline broke31

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s6
  • Sistema operativo:
    windows
salvataggio in maniera persistente di un arrayList
« il: 29 Giugno 2016, 19:00:42 CEST »
0
salve ragazzi, ho bisogno di salvare un arrayList durante l'esecuzione del mio codice, e fare in modo che ogni volta che si riapre l'app venga caricato dalla memoria il contenuto dell'arrayList, avevo pensato di usufruire di serializzazioni, ma non mi piace molto come soluzione, qualcuno ha qualche idea più raffinata?

Offline DCode

  • Utente junior
  • **
  • Post: 69
  • Respect: +20
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 16.04 LTS
Re:salvataggio in maniera persistente di un arrayList
« Risposta #1 il: 29 Giugno 2016, 22:06:30 CEST »
0
Potresti salvare tutto in un database!  ;-)
┻━┻ ︵ヽ(°□°ヽ) Develop w/ ( ( ObjC || Swift ) && Java[ "Android" ] ) (╯°□°)╯︵ ┻━┻

Offline broke31

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s6
  • Sistema operativo:
    windows
Re:salvataggio in maniera persistente di un arrayList
« Risposta #2 il: 29 Giugno 2016, 22:31:42 CEST »
0
No, mi sembra troppo oneroso salvare in un database, alla fine è solo una lista prodotti da salvare

Offline DCode

  • Utente junior
  • **
  • Post: 69
  • Respect: +20
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 16.04 LTS
Re:salvataggio in maniera persistente di un arrayList
« Risposta #3 il: 29 Giugno 2016, 22:57:51 CEST »
0
Altre alternative è salvarlo nelle SharedPreferences ( sconsigliato secondo me per questo tipo di dato ) o al massimo su un file che poi ti vai a leggere.
Il modo migliore e pulito per me resta comunque il DB  ;-)
┻━┻ ︵ヽ(°□°ヽ) Develop w/ ( ( ObjC || Swift ) && Java[ "Android" ] ) (╯°□°)╯︵ ┻━┻

Offline broke31

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s6
  • Sistema operativo:
    windows
Re:salvataggio in maniera persistente di un arrayList
« Risposta #4 il: 29 Giugno 2016, 23:15:28 CEST »
0
No, credo che il db non sia la scelta giusta, sono abiutuato ad usarlo per immagazzinare dati complessi ( collegati tra di loro con coerenza)non una semplice lista di n oggetti, per quale motivo pensi che SharedPreferences non sia efficiente?
« Ultima modifica: 30 Giugno 2016, 12:45:20 CEST da broke31 »

Offline DCode

  • Utente junior
  • **
  • Post: 69
  • Respect: +20
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 16.04 LTS
Re:salvataggio in maniera persistente di un arrayList
« Risposta #5 il: 29 Giugno 2016, 23:22:06 CEST »
0
Perché sono potenzialmente troppi dati da salvare.
Di solito sono usate per salvare variabili String, int generalmente usate come parametri di configurazione nell'app e quindi non necessitano di grande spazio.

Poi comunque sei liberissimo di usarle a te la scelta!
┻━┻ ︵ヽ(°□°ヽ) Develop w/ ( ( ObjC || Swift ) && Java[ "Android" ] ) (╯°□°)╯︵ ┻━┻

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 580
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:salvataggio in maniera persistente di un arrayList
« Risposta #6 il: 30 Giugno 2016, 09:51:35 CEST »
0
Quanti elementi può contenere la lista? Che tipo di oggetti contiene?
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline broke31

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s6
  • Sistema operativo:
    windows
Re:salvataggio in maniera persistente di un arrayList
« Risposta #7 il: 30 Giugno 2016, 11:20:20 CEST »
0
vabbé, essenndo un arrayList in teoria non ha un limite superiore, anche se ogni giorno verranno cancellati i prodotti con una data antecedente a quella di oggi.
ogni prodotto ha: nome prodotto, nome negozio, prezzo quantità e data.

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 580
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:salvataggio in maniera persistente di un arrayList
« Risposta #8 il: 30 Giugno 2016, 12:34:23 CEST »
0
Risposte vaghe, aiuto vago.

Utilizza Gson e/o Hawk.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline broke31

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s6
  • Sistema operativo:
    windows
Re:salvataggio in maniera persistente di un arrayList
« Risposta #9 il: 30 Giugno 2016, 12:43:54 CEST »
0
in realtà sto cercando si essere il più preciso possibile nelle risposte, ma come ti ho detto prima non posso prevedere fino a che punto crescerà il mio arrayList durante l'uso del programa.
quello che so di per certo è che tento di farlo crescere il meno possibile perché ogni giorno vado a cancellare dall'arrayList tutti i prodotti che hanno date di acquisto inferiori a quella attuale(e da qui il tentativo di cercare di limitare la grandezza della struttura).  Se mi chiedi altri dettagli sarò ben felice di fornirteli.
« Ultima modifica: 30 Giugno 2016, 12:46:01 CEST da broke31 »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:salvataggio in maniera persistente di un arrayList
« Risposta #10 il: 30 Giugno 2016, 12:54:36 CEST »
0
Non capisco quale sia il problema. Un Database SQL nasce proprio con l'obiettivo di servirti effecaciemente n righe. Poi ovvio se hai 1 milione di record su android non so cosa possa capitare.

Come detto du un altro post, ti suggerisci di usare Realm. Anche in termini di performance dovrebbe essere migliore. Detto questo non cambia molto se usi Realm o SQlite.

Offline broke31

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s6
  • Sistema operativo:
    windows
Re:salvataggio in maniera persistente di un arrayList
« Risposta #11 il: 30 Giugno 2016, 13:13:22 CEST »
0
Forse è una questione di quello che appresi dal corso di base di dati, la prof ci disse che un db non è sempre la scelta migliore,  ci disse che un database è funzionale solamente quando bisogna immagazzinare dati correlati, qui manca la correlazione di dati,  è semplicemente un arrayList da salvare quando si chiude l'app e deve ripristinare l'arrayList quando si riapre l'app, non so se mi sono ben spiegato :-)

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 580
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:salvataggio in maniera persistente di un arrayList
« Risposta #12 il: 30 Giugno 2016, 14:38:27 CEST »
0
La questione è molto semplice:

Se non utilizzi un DB devi tenere tutti i dati in memoria. Ti ho chiesto quanti sono per avere un ordine di grandezza. 10? 100? 1000?

In verità un dispositivo mobile non fa troppa fatica a tenere in memoria anche 100.000 record, ma l'idea è quella di utilizzare meno memoria possibile per velocizzare l'app e non ingolfare le altre.

Utilizzando il DB hai la possibilità di tenere in memoria SOLO i record effettivamente visualizzati nella ListView (più 3-4 per il buffer). Ed è per questo che, se gli elementi nella LV non sono espressamente limitati numericamente come nel tuo caso, anche io ti suggerirei di utilizzare un DB come metodo di memorizzazione dei dati.

Vuoi usare un altro sistema? Come preferisci, considera che ad ogni modifica (inserimento, cancellazione, aggiornamento) dell'array devi riscrivere TUTTI gli elementi, sia che usi file di testo che se usi le shared preferences.

Per la serializzazione: quella di sistema produce dati binari, che non sono adatti ad essere inseriti nelle sharedPref.

Personalmente preferisco controllare la serializzazione/deserializzazione, ma questo richiede un maggior lavoro perché è necessario implementare i serializzatori.

Ah, comunque puoi trattare l'arrayList come fosse un semplice array, questo potrebbe semplificarti la vita.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.