这更多的是应用程序逻辑和性能的问题。
项目设置:我有一个 Android ListView,它的布局比简单的文本更美观。在每一行(确切地说是 7 行)中,我都有一个通过 URL 获取的图像。
问题:这个 ListView 及其数据是由充当临时数据持有者的模型对象的 ArrayList 设置的。添加行后,模型对象将用于在特定行的 UI 中设置数据。然后问题就出现了,当用户在列表上向下滚动时,曾经可见的行现在不在用户的 View 中。当用户向上滚动回到该行时,获取图像的整个过程会再次发生。
这似乎可以通过模型传递 URL 然后获取图像来避免,我应该先获取图像,然后将位图传递给模型,因此当该行再次对用户可见时,它不必重新加载图像。
有没有办法编写一个可以成功加载7个图像的AsyncTask,或者我是否必须为每个图像创建一个AsyncTask对象?
每次我走这条路线时,应用程序都会崩溃......
最佳答案
您可以使用毕加索库来完成此任务。 访问http://square.github.io/picasso/
在 ListView 的适配器中,在 getView 方法中,您可以输入:
Picasso.with(context)
.load(url)
.placeholder(R.drawable.ic_launcher)
.error(R.drawable.ic_error)
.resizeDimen(R.dimen.list_detail_image_size,R.dimen.list_detail_image_size) .centerInside()
.into(imgView);
您不需要 AsyncTask,因为该库已经实现了自身。
关于java - Android加载图片到ListView AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21513629/