什么是LazyList?

我找不到任何真正可靠的来源来解释LazyList是什么。 任何人?

懒惰列表是从SD卡或从服务器使用URL延迟加载的图像。 这就像按需加载图像。

图像可以caching到本地的SD卡或手机内存。 url被认为是关键。 如果密钥存在于SD卡中,则显示SD卡中的图像,通过从服务器下载来显示图像,并将其caching到您select的位置。 caching限制可以设置。 您也可以select自己的位置来caching图像。 caching也可以被清除。

而不是用户等待下载大图像,然后显示懒惰列表,按需加载图像。 由于图像caching,您可以离线显示图像。

https://github.com/thest1/LazyList 。 懒惰列表

在你的getview

imageLoader.DisplayImage(imageurl, imageview); 

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); } } 

通用图像加载器是“懒惰列表”的另一种select

https://github.com/nostra13/Android-Universal-Image-Loader 。 它基于Lazy List(基于相同原理)。 但它有很多其他的configuration。 我宁愿使用****通用图像加载器****因为它给你更多的configuration选项。 如果downlaod失败,您可以显示错误图像。 可以显示圆angular的图像。 可以在光盘或内存上caching。 可以压缩图像。

在您的自定义适配器构造函数

  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(); 

在你的getView()

  ImageView image=(ImageView)vi.findViewById(R.id.imageview); imageLoader.displayImage(imageurl, image,options);//provide imageurl, imageview and options 

您可以使用其他选项进行configuration以满足您的需求。

随着延迟加载/通用图像加载器,您可以查看持有人的平滑滚动和性能。 http://developer.android.com/training/improving-layouts/smooth-scrolling.html

AFAIK,我会用例子来解释你如果列表中包含很多带有文本的图片,需要一些时间才能加载列表,因为你需要下载图片,而且你需要将它们填充到列表中。 假设您的列表包含100个图像下载每个图像并显示列表项将花费大量时间。 使用户等待,直到图像加载不友好的用户。 所以我们需要做的。 在这个时候懒惰的名单进入图片。 让图像在后台加载并显示文本意味着这个想法。

大家都知道,listview为每个视图回收视图。 即如果你的列表视图包含40个元素,那么listview将不会为40个项目分配内存,而是为可见项目分配内存,也就是说,一次只能看到10个项目。 所以listview会分配10个项目memory。

所以,当你滚动视图时,视图将会刷新。 因为你会失去你的图像的参考,你需要下载他们。 为了避免这种情况,caching进入画面。

这个例子是基于我在listview中的知识,我不是说这只是正确的。 答案可能有错,如果有任何机构可以随时通知我。

我认为这是相反的方式。 AFAIK, 懒加载是一个定义,只在需要的时候才加载数据,这是一个很好的devise实践。

所以我相信这也适用于此,只是这次是指列表视图。

如果我错了,请纠正我。

懒惰列表的最好的例子是Facebook通知,消息,请求。 当你滚动时,数据将被加载。