有没有办法从多个URL获取多个图像?

时间:2016-08-15 06:02:41

标签: java android

图片来自不同的网址,我希望在ListView中显示所有图片。每个URL代表一个图像,如何使用图像URL显示所有图像,其中每个图像都有唯一的ID?

" http://www.samplesite.com/Customer/File/DownloadResource/"图像标识"令牌=&#34 + m_token;

08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err: java.io.FileNotFoundException: http://samplesite.com/Customer/File/DownloadResource/220?token=aGkvWUlQSW9EeVZmU3pQOFF6WWo5OU4raGdzVjBrSngzWEQvbkNueWxYdz06dGVzdDFAYXBpLmNvbTo2MzYwNjg0OTU0MDgyMDAwMDA6Qw==
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at com.app.tysomcustomer.dashboard.LoyaltyFragment$ConvertImageUrlTask.doInBackground(LoyaltyFragment.java:320)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at com.app.tysomcustomer.dashboard.LoyaltyFragment$ConvertImageUrlTask.doInBackground(LoyaltyFragment.java:277)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at java.lang.Thread.run(Thread.java:818)

2 个答案:

答案 0 :(得分:1)

使用HttpURLConnection从URL获取输入流。然后使用BitmapFactory将此流解码为位图。 请记住,不要在主线程中运行此代码。否则它将阻止任何内容,直到图像被下载和解码。

try {
    URL url = new URL("http://www.samplesite.com/Customer/File/DownloadResource/" + imageID + "?token="+ m_token);
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

    Bitmap mBitmap = BitmapFactory.decodeStream(urlConnection.getInputStream());
    urlConnection.disconnect();

} catch (IOException e) {
    e.printStackTrace();
}

答案 1 :(得分:1)

要异步下载多个图像文件,您应该使用Universal Image Loader,Fresco,Picasso,Glide,Volley Image Loader等库。

我个人最喜欢的是Universal Image Loader

它为您提供了执行某些任务的选项,例如onLoadingStarted, onLoadingFailed, onLoadingComplete, onLoadingCancelled等等。

这是从服务器加载图像而不打扰asycTask的最佳方法,它在列表视图中运行良好。