【发布时间】:2015-03-13 18:56:14
【问题描述】:
在以下情况下:我有什么替代使用 AsyncTask 的方法?
我正在使用 AsyncTask 将图像加载到适配器中。适配器行有许多 TextView 和一个 ImageView。 ImageView 是我加载图像的地方。图像正在从 Internet 加载。问题是当我滚动时,错误的图像会显示在一行/单元格中——直到正确的图像有时间到达。如何防止这种图像不匹配发生? 我问这个问题是因为我想了解它是如何工作的:我不只是想获得一些可能为我工作的库(我已经尝试过的许多库都失败了)。
问题又来了:AsyncTask 会导致图像加载到错误的行中,这样用户就可以清楚地看到图像正在寻找它们的最终目的地。
我希望问题很清楚。为了完整起见,下面是我在适配器的getView 方法中调用的方法来加载每个图像。该方法也在适配器内部。 使用 AsyncTask 的替代方法是什么?
private void loadImage(final ImageView photo, String imageUrl) {
new AsyncTask<String, String, Bitmap>() {
@Override
protected Bitmap doInBackground(String... param) {
try {
Bitmap b = callToServer(imageUrl);//takes long
return b;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(Bitmap ret) {
if (ret != null) {
photo.setImageBitmap(ret);
}
}
}.execute(imageUrl);
}
【问题讨论】:
-
你可以使用 piccasso 库
-
正如问题所说:我想了解这个过程是如何工作的。但只是为了好玩:我已经尝试过毕加索。
标签: android image listview android-asynctask adapter