В настоящее время я работаю над использованием asynctask для загрузки изображения. Я имею ссылку на примерный класс. Однако результат Bitmap имеет значение null. Почему это и как я могу исправить проблему? Благодарю. Код показан ниже.Использование asyncTask для загрузки изображения в listview в android
package com.example.json;
import java.io.File;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
class ImgAdapter extends AsyncTask<Object, Void, Bitmap> {
private ImageView imv;
private String path;
public ImgAdapter(ImageView imv) {
this.imv = imv;
this.path = imv.getTag().toString();
}
@Override
protected Bitmap doInBackground(Object... params) {
Bitmap bitmap = null;
File file = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + path);
if (file.exists()) {
bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
if (!imv.getTag().toString().equals(path)) {
/*
* The path is not same. This means that this image view is handled
* by some other async task. We don't do anything and return.
*/
return;
}
if (result != null && imv != null) {
Log.i("test","success");
imv.setVisibility(View.VISIBLE);
imv.setImageBitmap(result);
} else {
Log.i("test","result=" + String.valueOf(result == null)); //result is null here
Log.i("test","imv=" + String.valueOf(imv == null));
Log.i("test","fail");
imv.setVisibility(View.GONE);
}
}
}
Как позвонить в ListView адаптер:
public View getView(int arg0, View arg1, ViewGroup arg2) {
ImageView thumbnail = (ImageView) arg1.findViewById(R.id.imageView1);
ShopEntry entry = getItem(arg0);
thumbnail.setTag(entry.image_url);
new ImgAdapter(thumbnail).execute();
return arg1;
}
Проверить эту ссылку. http://stackoverflow.com/questions/2471935/how-to-load-an-imageview-by-url-in-android –
Спасибо Я прочитал его сейчас – user782104
Вместо передачи ImageView к задаче, вы просто необходимо заполнить свой набор данных в адаптере возвращенным изображением, а затем в getView соответствующим образом изменить изображения. Выше реализации багги –