Je suis en train de développer un module qui permet l'affichage d'une galerie photo dans mon application, celle-ci doit récupérer une liste d'url depuis une bdd, puis les afficher. J'en suis pour l'instant ici :
Le problème, c'est que lorsque la galerie doit s'afficher, rien ne se passe, pas de fermeture, pas de log d'erreur, pourtant la liste d'url est bien chargée. J'ai essayé de tourner ça un peu dans tout les sens sans rien trouver
Donc voila, j'espère que c'est à peu près clair (Sinon vous demandez ), merci d'avance!
Essaye d'utiliser adapter.notifyDataSetChanged(); afin de notifier l'Adapter que le contenu du DataSet a changé et qu'il doit donc mettre à jour la View à laquelle il est rattaché.
A mon avis, tu sembles télécharger un peu trop d'images volumineuses pour ton application. N'oublie pas que tu programmes sur mobile et que charger plein d'image de grandes qualités n'est pas une bonne idée.
Tu pourrais nous donner l'erreur complète ?
Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
Alors je ne pense pas que cela vienne du volume de données, car lorsque je renseigne les urls manuellement, cela marche.
(Dans le code ci-dessous, je teste avec des images HD, mais en production, je ne devrais pas gérer des images de plus de 300ko)
Cette ligne ne sert à rien : adapter.notifyDataSetChanged();. Il est inutile de notifier l'adaptateur de changements lorsque tu ne l'as pas encore attaché à ton GridView (je suppose). Ton problème est donc que rien ne s'affiche ? Es-tu certain qu'il termine de télécharger tes images en HD ? Ca peut prendre du temps.
Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
Donc en fait, le code dans mon premier post est celui que je voudrais faire marcher, et celui dans mon dernier post est juste un code de test.
Mon code de test marche parfaitement bien, les images s'affichent correctement et je n'ai aucun soucis de téléchargement (HD ou non, et même avec un très grand nombre d'images). Mais le problème c'est que les url des images sont renseignées manuellement, hors je voudrais que cela soit dynamique.
Dans le code que je veux faire marcher, je récupère donc la liste d'url dynamiquement depuis une BDD, mais lorsque je fais mon setAdatpter(), rien ne se passe (Et l'adapter n'est pas vide puisqu'il contient bien le nombre d'objets que je souhaite charger)
Oki, ton adaptateur semble correct (je vois que tu as copier/coller un tuto sur le net sur le chargement d'image ). C'est alors peut-être l'ordre de tes executions qui posent problème. Essaye plutôt quelque chose comme :
Ok, je sais pourquoi. En fait, puisque tu alimentes ton tableau de données dans ton adaptateur par après (lorsque la requête asynchrone est terminée), du côté de l'adaptateur il possède un tableau non initialisé.
Il suffit, dans le constructeur de l'adaptateur, d'initialiser à vide ton tableau de données.
Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
Bonjour,
Tout d'abord désolé pour le retard, j'ai du abandonner ce projet pendant un moment
Donc j'ai bien fais les modifications que tu m'as conseillé, et ça marche presque !!!!
Il y a juste quand je vais sur la galerie, la première image ne s'affiche pas et l'appli affiche le loader qui tourne en boucle. Par contre si je change d'image, tout fonctionne impec ! (Même quand je reviens sur la première image elle se charge !)
Donc en gros ça coince juste à l'ouverture de la galerie, une fois que ce problème est réglé, ça va être top
J'ai pas trop le temps de regarder en ce moment, mais dès que je peux je remet le nez dedans !
Bonjour AndroWiiid,
Non j'ai aucun message d'erreur, en fait je pense que c'est mon adapter qui se rafraîchit pas une fois que la liste d'url est envoyé, du coup il reste vide.
Le mAdapter.notifyDataSetChanged(); est censé corriger ça normalement non ?
Non j'ai déjà essayé, dans ce cas là, rien ne se passe, je ne peux même pas afficher une seule image.
Ce qui est bizarre, c'est que le mAdapter.notifyDataSetChanged(); devrait refresh l'adapter je crois, et là j'ai l'impression qu'il ne fait rien du tout.
EDIT :
Oula, alors j'ai réussi à le faire fonctionner finalement Par contre je suis absolument pas sûr que le code soit très propre...
J'ai juste rajouté mGallery.onLayout(true,0,0,0,0); et comme par magie cela marche
Bon pour l'instant je laisse comme ça, mais si vous avez des suggestions je suis toujours preneur!
En tout cas merci de vos réponses !
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.