Как заменить следующие строки кода на Asynctask? Как вы «возвращаете» битмап из Asynctask? Спасибо.Android: Загрузка изображения из Интернета с помощью 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;
//---------------------------------------------------
}
Я думал о чем-то вроде этого:
заменить:
mChart.setImageBitmap(download_Image(graph_URL));
что-то вроде:
mChart.setImageBitmap(new DownloadImagesTask().execute(graph_URL));
и
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;
//---------------------------------------------------
}
}
но Как передать ссылку на mChart в onPostExecute (результат Bitmap) ??? Должен ли я передать его с URL-адресом в некотором роде? Я хотел бы заменить все мои строки кода:
mChart1.setImageBitmap(download_Image(URL_1));
mChart2.setImageBitmap(download_Image(URL_2));
нечто подобное ... но в AsyncTask пути!
mChart1.setImageBitmap(new DownloadImagesTask().execute(graph_URL_1));
mChart2.setImageBitmap(new DownloadImagesTask().execute(graph_URL_2));
Есть ли легкое решение для этого? У меня что-то не так?
довольно основной вопрос, но было бы полезно для многих начинающих, как я, я думаю ... пожалуйста, отправьте код, если у вас есть. – Hubert
Связанный: пример [ImageDownloader] (http://developer.android.com/resources/samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.html) – idbrii
@Hubert может уделить вам упоминание частного Bitmap download_Image (String url) { ... } этот код? – Erum