Con este código cargamos una imagen de internet de forma asíncrona y la añadimos a un ImageView.



public class CargarImagen extends AsyncTask<String, Integer, Bitmap> {


ProgressDialog dialog;
Activity activity;
ImageView img;


public CargarImagen(Activity activity) {
this.activity = activity;
}


@Override
protected void onPreExecute() { //Este método es el primero que se ejecuta al llamar a la clase, después pasa al doInBackground que le da una respuesta onPostExecute. En este caso el doInBackground devuelve un Bitmap pero puede devolver cualquier tipo de variable, indicando el tipo en el último parámetros del extends AsyncTask


dialog = new ProgressDialog(activity); //Creamos un dialogo para indicar que está cargando la imagen
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.setTitle(activity.getString(R.string.cargan doimagen));
dialog.show();


}


@Override
protected Bitmap doInBackground(String... params) { //String... permite pasar tantos parámetros como hagan falta


Bitmap resultado = null;
img = (ImageView) activity.findViewById(R.id.imagensuperior);
Bitmap imagenInternet;
URL newurl;


try {
newurl = new URL("http://www.url.net/"+params[0]+".jpg"); //params[0] es la url de la imagen pasada por parámetros desde la otra clase
imagenInternet = BitmapFactory.decodeStream(newurl.openConnection() .getInputStream()); //Cargamos la imagen en el bitmap
resultado = imagenInternet;
} catch (Exception e) {
resultado = null;
}


return resultado;
}


@Override
protected void onPostExecute(Bitmap result) { //Este método recibe el Bitmap que ha generado el método doInBackground
super.onPostExecute(result);
dialog.dismiss();
if(result != null)
img.setImageBitmap(result); //Añadimos la imagen al ImageView
else
Toast.makeText(activity,activity.getText(R.string. imposiblecargarimagen),Toast.LENGTH_LONG).show(); //El activity que hemos pasado a esta clase es para este Toast. Este es el único método de los 3 de esta clase que permite modificar la interface de la aplicación (es decir, cambiar cosas visibles para el usuario, como textos o imágenes).
}


}



Llamamos a la clase de esta forma:


new CargarImagen(this).execute(url); //this es una clase Activity