¿Cómo reemplazo las siguientes líneas de código con Asynctask? ¿Cómo "recuperas" el mapa de bits de Asynctask? Gracias.Android: cargando una imagen desde la Web con Asynctask
ImageView mChart = (ImageView) findViewById(R.id.Chart);
String URL = "http://www...anything ...";
mChart.setImageBitmap(download_Image(URL));
public static Bitmap download_Image(String url) {
//---------------------------------------------------
Bitmap bm = null;
try {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
Log.e("Hub","Error getting the image from server : " + e.getMessage().toString());
}
return bm;
//---------------------------------------------------
}
pensé en algo como esto:
reemplazar:
mChart.setImageBitmap(download_Image(graph_URL));
por algo como:
mChart.setImageBitmap(new DownloadImagesTask().execute(graph_URL));
y
public class DownloadImagesTask extends AsyncTask<String, Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... urls) {
return download_Image(urls[0]);
}
@Override
protected void onPostExecute(Bitmap result) {
mChart.setImageBitmap(result); // how do I pass a reference to mChart here ?
}
private Bitmap download_Image(String url) {
//---------------------------------------------------
Bitmap bm = null;
try {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
Log.e("Hub","Error getting the image from server : " + e.getMessage().toString());
}
return bm;
//---------------------------------------------------
}
}
pero ¿Cómo paso una referencia a mChart en onPostExecute (resultado de mapa de bits) ??? ¿Debo pasarlo con la URL de alguna manera? me gustaría reemplazar todas mis líneas de código:
mChart1.setImageBitmap(download_Image(URL_1));
mChart2.setImageBitmap(download_Image(URL_2));
con algo parecido ... pero en forma AsyncTask!
mChart1.setImageBitmap(new DownloadImagesTask().execute(graph_URL_1));
mChart2.setImageBitmap(new DownloadImagesTask().execute(graph_URL_2));
¿Existe una solución fácil para esto? ¿Me sale algo mal aquí?
pregunta bastante básica, pero sería útil para muchos principiantes como yo creo ... por favor publique un código si lo tiene. – Hubert
Relacionado: el [ejemplo de ImageDownloader] (http://developer.android.com/resources/samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.html) – idbrii
@Hubert puede mencionar el mapa de bits privado download_Image (String url) { ... } este código? – Erum