android动态显示包含文本和图像的列表,提高性能

时间:2014-09-05 06:40:37

标签: android android-listview

我需要显示一个项目列表,每个项目都包含文本和不同数量的图像。

我目前正在使用带有自定义适配器的ListView来显示这些项目。对于每个项目,我使用了带有LinearLayout的Horizo​​ntalScrollView来显示图像。在ListView的getView方法中,我读取每个项目的图像URI并动态创建ImageViews,然后异步加载图像。我使用ViewHolder来保存LinearLayout,其中包含每个项目的所有ImageView。

问题是,如果我向下滚动ListView并向后滚动,我将丢失该项目的内容,这意味着我必须再次加载图像。并且大多数图像太大并且加载速度非常慢。实际上在我的应用程序中,屏幕一次只能显示大约2或3个项目,因此滚动频繁发生。

我有一些想法可以改善这一点,但我不确定其中一个会改善效果。

  1. 由于我只是显示每个图像的缩略图,也许我可以将缩略图保存到临时目录并动态加载它们,加载小图像会快得多。当它变大时,我可能必须清除那个临时目录。
  2. 每个项目最多有9张图片,所以即使我缓存缩略图并经常滚动,它仍然可能会很慢。也许我必须手动显示列表而不是使用ListView,因此每个项目都不会被重用,并且加载只会发生一次。但是,这个列表将来会变得很大,如果我在LinearLayout中保留100个项目,我的应用程序可能仍会崩溃。
  3. 其他更好的选择......
  4. 任何建议都会有所帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用 LazyLoading 来显示图片。您可以使用 Universal Image Loader 来实现此目的。延迟加载的作用是下载一次图像,缓存它并在后续请求期间从缓存中显示图像。