Je ne trouve aucune source vraiment crédible expliquant ce qu'est LazyList. N'importe qui?
Lazy List est le chargement paresseux d'images à partir d'une carte SD ou d'un serveur à l'aide d'URL. C'est comme charger des images à la demande.
Les images peuvent être mises en cache sur la carte SD locale ou la mémoire du téléphone. L'URL est considérée comme la clé. Si la clé est présente dans la carte SD, affichez les images de la carte SD, sinon affichez l'image en la téléchargeant depuis le serveur et mettez-la en cache à l'emplacement de votre choix. La limite de cache peut être définie. Vous pouvez également choisir votre propre emplacement pour mettre en cache les images. Le cache peut également être effacé.
Au lieu que l'utilisateur attende de télécharger de grandes images puis affiche la liste paresseuse, charge les images à la demande. Étant donné que les images sont mises en cache, vous pouvez afficher des images hors ligne.
https://github.com/thest1/LazyList . Liste paresseux
Dans votre getview
imageLoader.DisplayImage(imageurl, imageview);
Méthode d'affichage ImageLoader
public void DisplayImage(String url, ImageView imageView) //url and imageview as parameters
{
imageViews.put(imageView, url);
Bitmap bitmap=memoryCache.get(url); //get image from cache using url as key
if(bitmap!=null) //if image exists
imageView.setImageBitmap(bitmap); //dispaly iamge
else //downlaod image and dispaly. add to cache.
{
queuePhoto(url, imageView);
imageView.setImageResource(stub_id);
}
}
Une alternative à Lazy List est Universal Image Loader
https://github.com/nostra13/Android-Universal-Image-Loader . Il est basé sur Lazy List (fonctionne sur le même principe). Mais il a beaucoup d'autres configurations. Je préférerais utiliser **** Universal Image Loader **** car il vous donne plus d'options de configuration. Vous pouvez afficher une image d'erreur en cas d'échec du téléchargement. Peut afficher des images aux coins arrondis. Peut mettre en cache sur le disque ou la mémoire. Peut compresser l'image.
Dans votre constructeur d'adaptateur personnalisé
File cacheDir = StorageUtils.getOwnCacheDirectory(a, "your folder");
// Get singletone instance of ImageLoader
imageLoader = ImageLoader.getInstance();
// Create configuration for ImageLoader (all options are optional)
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(a)
// You can pass your own memory cache implementation
.discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation
.discCacheFileNameGenerator(new HashCodeFileNameGenerator())
.enableLogging()
.build();
// Initialize ImageLoader with created configuration. Do it once.
imageLoader.init(config);
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.stub_id)//display stub image
.cacheInMemory()
.cacheOnDisc()
.displayer(new RoundedBitmapDisplayer(20))
.build();
Dans votre getView ()
ImageView image=(ImageView)vi.findViewById(R.id.imageview);
imageLoader.displayImage(imageurl, image,options);//provide imageurl, imageview and options
Vous pouvez configurer avec d'autres options pour répondre à vos besoins.
Avec le chargement paresseux/Universal Image Loader, vous pouvez afficher le support pour un défilement fluide et des performances. http://developer.Android.com/training/improving-layouts/smooth-scrolling.html .
AFAIK, je vais vous expliquer avec l'exemple Si votre liste contient beaucoup d'images avec du texte, il faudra un certain temps pour que votre liste se charge car vous devez télécharger des images et vous devez les remplir dans la liste. Supposons que votre liste contienne 100 images. Il faudra beaucoup de temps pour télécharger chaque image et lui montrer l'élément de liste. Faire patienter le chargement des images n'est pas convivial. donc ce que nous devons faire. À ce stade, une liste paresseuse entre en scène. C'est l'idée qui permet de charger les images en arrière-plan et de montrer le texte pendant ce temps.
Tout le monde sait que listview recycle ses vues pour chaque vue. Par exemple, si votre liste contient 40 éléments, listview n'allouera pas de mémoire pour 40 éléments au lieu de cela, elle allouera de la mémoire pour les éléments visibles, c'est-à-dire que vous ne pouvez voir que 10 éléments à la fois. donc listview allouera 10 éléments de mémoire.
Donc, à chaque fois que vous faites défiler la vue, la vue se rafraîchit. à cause de cela, vous perdrez votre référence aux images et vous devrez les télécharger à tout moment. afin d'éviter cela, la mise en cache entre en image.
Cet exemple est basé sur mes connaissances dans listview, je ne dis pas que ce n'est que correct. Il pourrait y avoir un problème dans la réponse, si n'importe quel corps trouve libre de m'en informer.
Je pense que c'est l'inverse. AFAIK, Lazy Loading est la définition, où vous ne chargez les données que lorsque vous en avez besoin, et c'est une bonne pratique de conception.
Je pense donc que la même chose s'applique à cela, mais cette fois-ci, il s'agit de la vue Liste.
Si je me trompe, veuillez me corriger.
Le meilleur exemple de liste paresseuse est les notifications, messages et demandes Facebook. lorsque vous faites défiler, les données seront chargées.