在ListView中存储和加载大量图像的最佳实践

时间:2013-12-22 16:13:14

标签: android android-listview android-imageview

我的申请有一个ListViewListView有很多图像。

1)将这些图片预加载到ListView中的最佳/最有效方法是什么? (我在bindView()的{​​{1}}中设置图像。我应该将它们存储为资产,原始文件还是可绘制目录?

如果我将图片存储在SimpleCursorAdapter中,我基本上有他们的名字,但不是drawable资源。

2)int是否可以到达这里?

如果有一组新图像可用,应用程序将查询服务器。如果它们可用,它会延迟下载并将它们存储到缓存中。现在旧图像没用了。

3)有没有办法摆脱它们?

2 个答案:

答案 0 :(得分:1)

我建议您尝试Picasso。它负责处理缓存和图像加载。

在Adapter类的getView方法中,您只需要一行代码。

Picasso.with(context).load(image_url).into(holder.imageView);

答案 1 :(得分:0)

  

将这些图像预加载到我的图片中的最佳/最有效方法是什么?   的ListView?

你已经在使用LazyList了,所以这就是perfetct

Should I store them as assets, raw files or in the drawable directory?

这取决于您的选择

  

有没有办法摆脱它们?

是的,转到lazylist中的FileCache类,那里会有一个变量cacheDir

它实际上告诉你存储旧/缓存图像的目录,因此你可以从那里执行你想要的任何东西

编辑:这是lazylist的链接 https://github.com/thest1/LazyList

它做的是,它在加载到iamgeview之前对图像进行下采样,因此节省了大量内存,我猜它使用了视图模式,因此没有什么可担心内存泄漏也会异步加载图像,因此UI不会滞后正在加载图像的时间