这更像是应用程序逻辑和性能的问题。
项目设置:我有一个Android ListView,它扩展了一个比简单文本更美观的布局。在每一行(确切地说是7行)中,我有一个由URL提取的图像。
问题:此ListView及其数据由作为临时数据持有者的模型对象的ArrayList设置。添加行后,模型对象将用于设置特定行UI中的数据。然后出现问题,当用户向下滚动列表时,曾经可见的行现在不在用户的视图中。当用户向上滚动到该行时,再次发生获取图像的整个过程。
这似乎可以避免通过模型传递URL然后获取图像,我应该首先获取图像,然后将位图传递给模型,因此当行再次对用户可见时,它不必重新加载图像。
有没有办法编写可以成功加载7个图像的AsyncTask,还是我必须为每个图像创建一个AsyncTask对象?
每当我走这条路线时,应用程序崩溃......
答案 0 :(得分:0)
您可以使用Picasso库执行此任务。 访问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,因为这个库已经实现了。