java - Android加载图片到ListView AsyncTask

标签 java android listview bitmap android-asynctask

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

项目设置:我有一个 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/

相关文章:

android - 如果用户需要更新他们的 google play 服务如何处理

java - 编写提醒应用程序无法创建新对象

jquery 移动数据图标

android - 如何更改 ListView 作为 TextView 的更改(Android)

java - spring ws配置wsdl生成策略?

java - 如果即使条件为真,条件也不起作用

java - 在流上执行正则表达式

android - 在 Android 中使用 play-services-auth 的 token 通过 Google Analytics Data API 进行身份验证

java - 为什么要在 OSGi 中创建和使用服务

java - OnLongClickListener - 没有被解雇+ android