2017-04-24 1 views
1

J'écris une application Android. J'ai un ArrayAdapter que j'utilise pour afficher une liste d'éléments où une partie de chaque élément est une image. Je télécharge les images de manière asynchrone dans la méthode getView() et j'utilise un cache pour le garder le plus efficace possible et arrêter trop de re-téléchargements. Le problème auquel je suis confronté est que la méthode getView() pour chaque élément peut être appelée par android autant de fois qu'il le faut. Il est souvent appelé plus rapide que l'image ne peut réellement être téléchargée et la même image peut être mise en file d'attente plusieurs fois en téléchargement avant même d'être mise en cache. Existe-t-il une meilleure pratique pour empêcher les images d'être mises en file d'attente pour téléchargement à plusieurs reprises? Cela semble juste une grosse perte de données mobiles.Android, chargement efficace des images dans un adaptateur de liste

+0

ESt trop d'expliquer ici, mais ce guide de développeur devrait aider: https://developer.android.com/topic/perfor mance/graphics/load-bitmap.html – Opiatefuchs

Répondre

0

La meilleure pratique acceptée qui est recommandé par Google pour le téléchargement et l'affichage des images dans une liste ou recyclerview est d'utiliser la bibliothèque Glide

https://github.com/bumptech/glide

Le api ressemble à ceci

Glide.with(context) .load(url) .centerCrop() .placeholder(R.drawable.loading_spinner) .crossFade() .into(myImageView);

+0

Cela a eu quelques bizarreries et limitations parce que j'utilise des images avec des coins arrondis, mais il semble très bien merci. Il n'y avait aucun problème que vous ne pouvez pas vous déplacer avec un peu de recherche –

+0

Yup, Glide est génial: D – Shmuel

1

Si vous souhaitez utiliser la bibliothèque de téléchargement d'images de tiers, vous pouvez utiliser Picasso
Son actullay assez propre et simple à utiliser. Il effectue la mise en cache pour votre application. Vous pouvez vous référer au tutoriel this.
apprentissage heureux :)