Aller au contenu

[Résolu] Dans quoi stocker les données d'un .plist ?


Recommended Posts

Bonjour,

 

Suite à l'adaptation d'une application iOS sur Android, je suis amené à parser un fichier .plist pour récupérer une liste de produits. Pour cela, j'utilise cette bibliothèque qui fonctionne très bien.

 

Pour ceux qui ne connaissent pas bien le contenu des .plist, cela ressemble à du XML standard. Voici un exemple concret :

<plist version="1.0">
    <array>
        <dict>
            <key>ID</key>
            <string>ID01</string>
            <key>Title</key>
            <string>Le titre du produit 1</string>
            ...
        </dict>
        <dict>
            <key>ID</key>
            <string>ID02</string>
            <key>Title</key>
            <string>Le titre du produit 2</string>
            ...
        </dict>
    </array>
</plist>

Après avoir parsé le .plist, j'aurais besoin de stocker son contenu (ID, Title, etc.) et d'accéder aux informations d'un seul produit sans avoir à parser le fichier plusieurs fois. Du coup, je me demande ce qu'il y aurait de plus optimisé pour cela : ArrayList ? Map ? HashMap ou autre ? J'avoue que je suis un peu perdu malgré la consultation de la Doc Android.

 

Pour un exemple d'utilisation :

- Parsage au lancement de l'application,
- Affichage d'une Activity avec la liste des produits,

- Au tap sur un produit, affichage d'une nouvelle Activity avec les détails du produit.

 

Si je ne suis pas clair, n'hésitez pas à me le faire savoir. En vous remerciant d'avance pour votre précieuse aide !

 

 

Modifié par jok
Lien vers le commentaire
Partager sur d’autres sites

Je pense que le plus adapté serait de passer par une base de données.

Au premier lancement de l'application, la base n'existant/étant vide, on parse le ficher pour remplir la base

Ensuite, les Activities peuvent aller chercher les informations dans la base pour l'affichage; il est assez simple d'afficher le contenu d'une table dans une ListView par ex. ; et échanger un objet Java complexe/volumineux (un tableau, une Map, ...) est tout sauf simple/n'est pas recommandé

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse !

 

Donc je pars sur du SQLite alors.

Ah oui, autre chose... Je compte parser le fichier pour remplir la base de données à chaque fois que je lance l'application et qu'il y a une connexion Internet, mais est-ce que cela prendrais du temps selon toi de supprimer la table et de la recréer en cas de changements dans ce .plist ou vaut-il mieux comparer chaque item et voir si quelque chose à changé ? Je ne me rends pas compte au niveau de la consommation de ressources...

Lien vers le commentaire
Partager sur d’autres sites

Difficile de te faire une réponse précise; tout dépend de la complexité et du volume de tes données. Point de vue implémentation, il est sans doute plus simple à chaque fois de vider la table (pas besoin de la supprimer), parser le fichier et insérer les données; point du vue efficacité, il serait préférable de ne mettre à jour que ce qui est nécessaire (mais cela nécessite de pouvoir détecter seulement les changements dans les données à parser)

Petit conseil supplémentaire: Android imposant que les communications réseaux (et voire aussi les manipulations BDD) se fasse de manière non bloquante par rapport à l'IHM (donc dans un thread dédié), il serait je pense opportun que tu implémentes un Service qui se charge de la récupération / parsing du plist / insertion en BDD. Ce service serait appelée par ton Activity lorsque celle-ci est activée

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Je comprends, je verrai ça en tant voulu alors.

 

Tu m'enlèves une énorme épine du pied, y compris pour l'utilisation d'un Service car je me rends compte qu'AsyncTask n'est pas top pour ce que je veux faire : l'utilisateur est obligé d'attendre que tous les produits soient chargés pour les consulter, alors que l'idéal est bien entendu que tout se fasse en tâche de fond.

Merci beaucoup pour ton aide, et si tu as d'autres conseils supplémentaires n'hésite pas, je suis toujours preneur ! :)

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...