什么是LazyList?(What's LazyList?)

2019-07-23 07:24发布

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

Answer 1:

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

图像可以被缓存到本地SD卡或手机内存。 网址是考虑的关键。 如果关键是从服务器下载并缓存同样为您选择的位置在SD卡上,显示的图像从SD卡其他显示图像存在。 缓存限制可以设置。 您也可以选择自己的位置,以高速缓存图像。 缓存也被清除。

而不是等待用户下载大量的图像,然后显示懒清单,按需加载图像。 由于图像缓存可以显示图像脱机。

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

懒列表的替代方案是通用图像装载机

https://github.com/nostra13/Android-Universal-Image-Loader 。 它是基于懒列表(在相同的原则也适用)。 但它也有很多其他的配置。 我宁愿用****通用图像装载机****怎么把它给你更多的配置选项。 如果立即下载失败,您可以显示一个错误的图像。 能显示带圆角的图像。 可以缓存光盘或记忆。 可以压缩图像。

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

  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

你可以用其他选项配置,以满足您的需求。

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



Answer 2:

据我所知,我将解释你的例子如果列出包含大量的文字与图像,这将需要一些时间列表加载,因为你需要下载图片,你需要填充它们在列表中。 假设,如果你的列表中包含100张图像这将需要大量的时间来下载每幅图像,并显示出它的列表项。 为了使用户等待,直到图像负载不是用户友好的。 所以我们需要做什么。 在这个时间点懒列表进入图片。 这是一个让图像在背景和文字显示加载的意思,而这个想法。

每个人都知道的ListView回收其观点对每个视图。 也就是说,如果您的列表视图中包含40个elemtns然后列表视图不会为40项分配内存,而不是它分配内存可见的项目,即表示你可以在同一时间只能看到10个项目。 这样的ListView将拨出10项meemory。

所以,当你永远滚动视图,那么该视图将刷新。 因为你会失去你的参考图片,你需要下载它们agian。 为了避免这种情况,缓存进入画面。

这个例子是基于我在列表视图的知识,我并不是说这是唯一正确的。 有可能是错误的答案,如果任何机构找到随时通知我。



Answer 3:

我认为这是周围的其他方式。 据我所知, 延迟加载的定义是,在那里你当你需要它实际上只加载数据,这是一个很好的设计实践。

所以我相信同样适用于这一点,只是这一次它被提到列表视图。

如果我错了,请大家指正。



Answer 4:

懒惰名单的最好的例子就是Facebook的通知,消息,请求。 当你再滚动数据将被加载。



文章来源: What's LazyList?