Android 什么';谁是懒鬼?

Android 什么';谁是懒鬼?,android,lazylist,Android,Lazylist,我找不到任何真正可靠的消息来源来解释什么是懒鬼。有人吗?我想情况正好相反。AFAIK是一个定义,在这个定义中,您实际上只在需要时加载数据,这是一个很好的设计实践 所以我相信这同样适用,只是这一次它指的是列表视图 如果我错了,请纠正我。懒惰列表的最好例子是facebook通知、消息和请求。当您滚动时,数据将被加载。好的,我将用示例向您解释 如果列表中包含大量带有文本的图像,则加载列表需要一些时间,因为您需要下载图像,并且需要在列表中填充它们。假设您的列表包含100个图像,那么下载每个图像并将其显示

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

我想情况正好相反。AFAIK是一个定义,在这个定义中,您实际上只在需要时加载数据,这是一个很好的设计实践

所以我相信这同样适用,只是这一次它指的是列表视图


如果我错了,请纠正我。

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

好的,我将用示例向您解释 如果列表中包含大量带有文本的图像,则加载列表需要一些时间,因为您需要下载图像,并且需要在列表中填充它们。假设您的列表包含100个图像,那么下载每个图像并将其显示在listitem中需要很多时间。让用户等待图像加载不是用户友好的。 所以我们需要做的是。此时,懒惰列表出现在画面中。它的想法是让图像加载到背景中,同时显示文本

每个人都知道listview会为每个视图回收视图。i、 e如果listview包含40个元素,则listview不会为40个项目分配内存,而是为可见项目分配内存,即一次只能看到10个项目。因此,listview将为meemory分配10个项目

因此,当您滚动视图时,视图将刷新。因为你们会丢失你们对图片的引用,你们需要重新下载它们。为了避免这种情况,缓存就出现了


这个例子是基于我在listview中的知识,我并不是说这仅仅是正确的。如果有人发现答案可能有误,请随时通知我。

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

图像可以缓存到本地sd卡或手机存储器中。Url被认为是关键。如果钥匙存在于sd卡中,则显示来自sd卡的图像,否则通过从服务器下载显示图像,并将其缓存到您选择的位置。可以设置缓存限制。您还可以选择自己的位置来缓存图像。缓存也可以被清除

用户不再等待下载大型图像,然后显示延迟列表,而是按需加载图像。因为图像是缓存的,所以可以脱机显示图像

。懒惰列表

在您的getview中

imageLoader.DisplayImage(imageurl, imageview);
图像加载器显示方法

    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);
     }
   }
惰性列表的另一种选择是通用图像加载器

。它基于惰性列表(工作原理相同)。但它有很多其他配置。我更喜欢使用****通用映像加载器****因为它提供了更多的配置选项。如果downlaod失败,您可以显示错误图像。可以显示圆角的图像。可以缓存在磁盘或内存中。可以压缩图像

在自定义适配器构造函数中

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

您可以配置其他选项以满足您的需要

随着懒惰加载/通用图像加载器,您可以查看平稳滚动和性能的持有人。
.

嘿,raghu,我无法从本地uri获取图像,请您帮忙好吗?很好的解释,所以懒惰列表类似于毕加索或glide?@user2198400这些都是图像缓存库。是的,它们有助于延迟加载。另外,请阅读listview回收机制。感谢您的快速回答,是否有任何关于使用picasso或glide的惰性列表的例子?谢谢你advance@user2198400从Chris banes在github中搜索chessemaster
  ImageView image=(ImageView)vi.findViewById(R.id.imageview); 
  imageLoader.displayImage(imageurl, image,options);//provide imageurl, imageview and options