【发布时间】:2013-10-02 13:59:39
【问题描述】:
这篇文章是关于 Android 的。 以下是正在发生的事情:
我正在加载 JSON 并将其放入 ListView。现在,这个 ListView 中的一个项目基本上是一个 ImageView 和一个 TextView。
因为 ImageView 的图片最大可以达到 2MB,所以我想在加载 ListView 之后再加载 ImageView 的 Drawable 异步(也做了异步)。
我应该怎么做?我已经创建了 2 个 AsyncTask,一个用于加载列表,另一个用于加载基于 URL 的 Drawable。两者都有效,但我不知道如何通知 ListView Drawable 已更新。
目前,当我向下滚动并且项目消失时,Drawable 会显示。然后我向后滚动,我看到图像已更新。我认为这是因为我在 getView (ArrayAdapter) 中“设置”了图像,并且当项目进入视图时会调用此 get。
所有数据都存储在 BlablaItem 的 ArrayList 中。 假设 BlablaItem 包含“String title”、“String imageUrl”和“Drawable image”。 完美的是在类中更新这个 Drawable 并且 ListView 也会自动更新它......
所以我的问题是如何很好地完成这一切,在哪里为 Drawable 创建我的 AsyncTask(当前在处理 JSON 的循环中),在哪里创建我的 AsyncTask(当前在 ArrayAdapter 构造函数中)以及如何向 ListView 发出信号Drawable 已更新。
【问题讨论】:
-
用这个代替普通的imageview github.com/sherifelkhatib/…
-
确实有几十个开源库可以处理这个问题。其中一些突出的是github.com/lucasr/smoothie 和github.com/nostra13/Android-Universal-Image-Loader
-
我想你应该试试这个:stackoverflow.com/questions/541966/…
-
最有可能的是,在您遇到 CPU 问题之前,如果内存不足。尤其是您使用的图像大小。确保您的图片足够小,并且尽可能释放空间。
标签: android listview android-listview android-asynctask