Jump to content
jok

[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 !

 

 

Edited by jok

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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 ! :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.






×
×
  • Create New...