Android将图像加载到ListView AsyncTask

时间:2014-02-02 17:20:39

标签: java android listview bitmap android-asynctask

这更像是应用程序逻辑和性能的问题。

项目设置:我有一个Android ListView,它扩展了一个比简单文本更美观的布局。在每一行(确切地说是7行)中,我有一个由URL提取的图像。

问题:此ListView及其数据由作为临时数据持有者的模型对象的ArrayList设置。添加行后,模型对象将用于设置特定行UI中的数据。然后出现问题,当用户向下滚动列表时,曾经可见的行现在不在用户的视图中。当用户向上滚动到该行时,再次发生获取图像的整个过程。

这似乎可以避免通过模型传递URL然后获取图像,我应该首先获取图像,然后将位图传递给模型,因此当行再次对用户可见时,它不必重新加载图像。

有没有办法编写可以成功加载7个图像的AsyncTask,还是我必须为每个图像创建一个AsyncTask对象?

每当我走这条路线时,应用程序崩溃......

1 个答案:

答案 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,因为这个库已经实现了。