IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Votre avis sur la persistance de données pour un ArrayList


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut Votre avis sur la persistance de données pour un ArrayList
    Bonjour,

    Je débute dans la programmation Android, et j'aimerais avoir votre avis comment "sauvegarder" un ArrayList.

    Tout d'abord je vous pose le contexte, j'ai une application qui se connecte à une ou plusieurs boutique(s) en ligne via un Webservice.
    Dans ma première activité j'ai la liste des boutiques affichée dans une ListView qui est alimentée par un ArrayList.

    Mon ArrayList de type boutique qui est composé d'objet "boutique" contenant id, nom, url, url-api (lien du webservice).

    Je peux ajouter autant de boutique je veux mais une fois l'activité détruite logiquement mon ArrayList est détruit.

    J'ai fais des recherches sur Google et je suis tombé sur des choses mais j'ai du mal à choisir quelle méthode est la meilleur :

    - sauvegarder mon ArrayList dans la méthode onSavedInstanceState via le bundle (mais cela impliquerai que mon ArrayList soit Parcelable, j'ai un peu du mal avec ça)
    - mettre mon ArrayList dans un ficher xml ou json (ça me parait un peu lourd niveau performance, je me trompe peut-être).
    - SqlLight
    - fichier de préférence mais d'après ce que j'ai pu lire ça ne correspondrai pas dans mon cas.

    Merci de donner votre avis sur quelle méthode choisir et les pour et contre.
    Et de m'éclairer un peu sur le onSavedInstanceState, je ne veux pas forcément que vous me donnez du code tout fait mais des indications, comme dis le proverbe :
    C'est en forgeant qu'on devient forgeron

  2. #2
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Ca dépend de ton besoin.
    Tu ne dis pas si tu as besoin d'avoir une vrais persistance des donnèes (Je tue mon app, je la relance 6 mois plus tard j'ai encore mes données); Ou tu souhaites les conservers tant que l'application est encore en vie?

    C'est une différence de taille, qui fait orienter le choix...
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Si la persistance doit se faire sur la durée de fonctionnement de l'application , passer par des bundle en rendant ton contenu parcelable est la solution. J'avais écrit un article à ce sujet il y'a quelque temps : http://blog.oroger.fr/blog/2011/07/0...ia-parcelable/

    Si la persistance doit se faire sur le long terme passe par une base sqlite. Tu pourras alors alimenter ta listview via un cursorAdapter plutot qu'un arrayAdapter.

    Les sharedPreference ne sont pas fait pour ça et l'utilisation de fichier (xml, json ...) pour du contenu dynamique ne me semble pas très judicieux.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Merci grunk, ton tuto est bien clair c'est ce qu'il me fallait.
    En fait je pensais être assez clair mais peut-être pas, dans mon ArrayList je stock les identifiants pour se connecter au webservice. C'est donc du long terme (tant que l'application n'est pas désinstallée).

    Je vais m'orienter sur SQL Light.

    Encore merci !!

  5. #5
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par lex89 Voir le message
    Merci grunk, ton tuto est bien clair c'est ce qu'il me fallait.
    En fait je pensais être assez clair mais peut-être pas, dans mon ArrayList je stock les identifiants pour se connecter au webservice. C'est donc du long terme (tant que l'application n'est pas désinstallée).

    Je vais m'orienter sur SQL Light.

    Encore merci !!
    Bonjour,

    Même si les bases de données sont intéressantes, si le nombre de données est faible et leur structure simple, un simple fichier texte peu suffire aussi.
    Si ton application évolue ensuite, il sera temps de passer à une base de données.

    Pourquoi faire compliquer quand on peu faire simple...

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Même si les bases de données sont intéressantes, si le nombre de données est faible et leur structure simple, un simple fichier texte peu suffire aussi.
    C'est ce que je voulais faire, mais je suis partis du principe que l'utilisateur peut avoir 2 ou 3 sites, du coup j'ai créé un objet Site qui contient nom, url, login, pwd.
    Ensuite j'ai stocké l'objet Site dans une ArrayList de type Site, et c'est cette ArrayList que je voudrais "sauvegarder" tant que l'application n'est pas désinstallée du smartphone.

    Sa me parait un peu fastidieux de stocker un ArrayList d'objet dans un fichier texte, peut-être que je me trompe ?

  7. #7
    Membre actif Avatar de IsiTech
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Points : 268
    Points
    268
    Par défaut
    Citation Envoyé par lex89 Voir le message
    Bonjour,


    C'est ce que je voulais faire, mais je suis partis du principe que l'utilisateur peut avoir 2 ou 3 sites, du coup j'ai créé un objet Site qui contient nom, url, login, pwd.
    Ensuite j'ai stocké l'objet Site dans une ArrayList de type Site, et c'est cette ArrayList que je voudrais "sauvegarder" tant que l'application n'est pas désinstallée du smartphone.

    Sa me parait un peu fastidieux de stocker un ArrayList d'objet dans un fichier texte, peut-être que je me trompe ?
    Au contraire c'est assez simple : Il suffit que ta classe Site implémente l'interface Serializable, puis tu peux directement écrire l'objet dans un fichier, voir la doc Android. Si tu écris ton fichier sur le stockage interne, il sera supprimé lorsque l'application sera désinstallée.

  8. #8
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par IsiTech Voir le message
    Au contraire c'est assez simple : Il suffit que ta classe Site implémente l'interface Serializable, puis tu peux directement écrire l'objet dans un fichier, voir la doc Android. Si tu écris ton fichier sur le stockage interne, il sera supprimé lorsque l'application sera désinstallée.
    Bien : +1

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Ah oui pas bête j'avais pensé d’implémenter Parcelable mais pas Serializable, je vais me pencher sur le Serializable.

    Merci IsiTech.

  10. #10
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par lex89 Voir le message
    Ah oui pas bête j'avais pensé d’implémenter Parcelable mais pas Serializable, je vais me pencher sur le Serializable.

    Merci IsiTech.
    Attention, Parcelable et Serializable n'ont pas du tout les mêmes utilités même si des similitudes conceptuelles existent entre ces deux mécanismes.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/05/2009, 11h56
  2. Réponses: 10
    Dernier message: 14/05/2008, 10h21
  3. Réponses: 2
    Dernier message: 11/04/2007, 21h59
  4. Réponses: 5
    Dernier message: 26/02/2007, 23h51
  5. votre avis sur le site que j'ai développé pour un ami ?
    Par cyclopat dans le forum Mon site
    Réponses: 13
    Dernier message: 23/07/2006, 23h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo