package jp.mydns.sys1yagi.android.mockitosample;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.view.View;
import android.widget.ImageView;
public class ImageLoader {
@SuppressWarnings("rawtypes")
public void loadImage(final ImageView imageView, String imageUrl) {
Object maybeTask = imageView.getTag();
if (maybeTask != null) {
if (maybeTask instanceof AsyncTask) {
((AsyncTask) maybeTask).cancel(true);
}
}
AsyncTask<String, Void, Bitmap> task = new AsyncTask<String, Void, Bitmap>() {
@Override
protected Bitmap doInBackground(String... params) {
try {
return BitmapFactory.decodeStream(new URL(params[0])
.openStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Bitmap result) {
imageView.setTag(null);
if (imageView != null && !isCancelled()) {
imageView.setVisibility(View.VISIBLE);
imageView.setImageBitmap(result);
}
};
}.execute(imageUrl);
imageView.setTag(task);
}
@SuppressWarnings("rawtypes")
public void cancel(ImageView imageView) {
Object maybeTask = imageView.getTag();
if (maybeTask != null) {
if (maybeTask instanceof AsyncTask) {
((AsyncTask) maybeTask).cancel(true);
}
}
}
}