title: Android Loading Image from URL in ListView
body: <p>I am Reading imageURL's From Rss Xml file and displaying in List View,I'm able to display the images ,but getting Exception For Some Image URL's </p>
  
  <p><strong>java.io.FileNotFoundException</strong> </p>
  
  <p>Here My Code:</p>
  
  <pre><code>public class ImageLoader {
  
      MemoryCache memoryCache=new MemoryCache();
      FileCache fileCache;
      private Map&lt;ImageView, String&gt; imageViews=Collections.synchronizedMap(new WeakHashMap&lt;ImageView, String&gt;());
      ExecutorService executorService; 
      String type;
      public ImageLoader(Context context,String type){
          fileCache=new FileCache(context);
          executorService=Executors.newFixedThreadPool(5);
          this.type=type;
      } 
  
      public ImageLoader(Context context){
          fileCache=new FileCache(context);
          executorService=Executors.newFixedThreadPool(5);
      }    
      final int stub_id = R.drawable.toriimg;
      public void DisplayImage(String url, ImageView imageView)
      {
          //Log.d("ImageLoader","Iam in DisplayImage");
          imageViews.put(imageView, url);
          Bitmap bitmap=memoryCache.get(url);
          if(bitmap!=null)
              imageView.setImageBitmap(bitmap);
          else
          {
              queuePhoto(url, imageView);
              imageView.setImageResource(stub_id);           
          }
      }
  
      private void queuePhoto(String url, ImageView imageView)
      {
          PhotoToLoad p=new PhotoToLoad(url, imageView);
          executorService.submit(new PhotosLoader(p));
      }
  
      private Bitmap getBitmap(String url) 
      {
          File f=fileCache.getFile(url);
  
          //from SD cache
          Bitmap b = decodeFile(f);
          if(b!=null)
              return b;
  
          //from web
          try {
              Bitmap bitmap=null;
              URL imageUrl = new URL(url);
              HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
              conn.setConnectTimeout(30000);
              conn.setReadTimeout(30000);
              conn.setInstanceFollowRedirects(true);
              InputStream is=conn.getInputStream();
              OutputStream os = new FileOutputStream(f);
              Utils.CopyStream(is, os);
              os.close();
              bitmap = decodeFile(f);
              return bitmap;
          } catch (Exception ex){
             ex.printStackTrace();
             return null;
          }
      }
  
      //decodes image and scales it to reduce memory consumption
      private Bitmap decodeFile(File f){
          try {
              //decode image size
              BitmapFactory.Options o = new BitmapFactory.Options();
              o.inJustDecodeBounds = true;
              BitmapFactory.decodeStream(new FileInputStream(f),null,o);
              //Find the correct scale value. It should be the power of 2.
             int REQUIRED_SIZE=70;
              int width_tmp=o.outWidth, height_tmp=o.outHeight;
              int scale=1;
              if(this.type=="SongPlayActivity")
              {
  
                  scale=1;
  
              }
              else if(this.type=="AlbumPlayListActivity")
              {
  
  
                  scale=1;
              }
              else
              {
  
              while(true){
                  if(width_tmp/2&lt;REQUIRED_SIZE || height_tmp/2&lt;REQUIRED_SIZE)
                      break;
                  width_tmp/=2;
                  height_tmp/=2;
                  scale*=2;
              }
              }
              //decode with inSampleSize
              BitmapFactory.Options o2 = new BitmapFactory.Options();
              o2.inSampleSize=scale;
              return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
          } catch (FileNotFoundException e) {}
          return null;
      }
  
      //Task for the queue
      private class PhotoToLoad
      {
          public String url;
          public ImageView imageView;
          public PhotoToLoad(String u, ImageView i){
              url=u; 
              imageView=i;
          }
      }
  
      class PhotosLoader implements Runnable {
          PhotoToLoad photoToLoad;
          PhotosLoader(PhotoToLoad photoToLoad){
              this.photoToLoad=photoToLoad;
          }
  
          public void run() {
              if(imageViewReused(photoToLoad))
                  return;
              Bitmap bmp=getBitmap(photoToLoad.url);
              memoryCache.put(photoToLoad.url, bmp);
              if(imageViewReused(photoToLoad))
                  return;
              BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad);
              Activity a=(Activity)photoToLoad.imageView.getContext();
              a.runOnUiThread(bd);
          }
      }
  
      boolean imageViewReused(PhotoToLoad photoToLoad){
          String tag=imageViews.get(photoToLoad.imageView);
          if(tag==null || !tag.equals(photoToLoad.url))
              return true;
          return false;
      }
  
      //Used to display bitmap in the UI thread
      class BitmapDisplayer implements Runnable
      {
          Bitmap bitmap;
          PhotoToLoad photoToLoad;
          public BitmapDisplayer(Bitmap b, PhotoToLoad p){bitmap=b;photoToLoad=p;}
          public void run()
          {
              if(imageViewReused(photoToLoad))
                  return;
              if(bitmap!=null)
                  photoToLoad.imageView.setImageBitmap(bitmap);
              else
                  photoToLoad.imageView.setImageResource(stub_id);
          }
      }
  
      public void clearCache() {
          memoryCache.clear();
          fileCache.clear();
      }
  
  }
  </code></pre>
  
  <p>LogCat:</p>
  
  <pre><code>05-14 13:00:09.640: W/System.err(11295): java.io.FileNotFoundException: http://www.toucheradio.com/hostphotos/kiran Abbaraju.jpg
  05-14 13:00:09.640: W/System.err(11295):    at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:521)
  05-14 13:00:09.640: W/System.err(11295):    at com.teluguone.torilt.model.ImageLoader.getBitmap(ImageLoader.java:89)
  05-14 13:00:09.640: W/System.err(11295):    at com.teluguone.torilt.model.ImageLoader.access$0(ImageLoader.java:72)
  05-14 13:00:09.640: W/System.err(11295):    at com.teluguone.torilt.model.ImageLoader$PhotosLoader.run(ImageLoader.java:163)
  05-14 13:00:09.640: W/System.err(11295):    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:444)
  05-14 13:00:09.640: W/System.err(11295):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
  05-14 13:00:09.640: W/System.err(11295):    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
  05-14 13:00:09.640: W/System.err(11295):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
  05-14 13:00:09.640: W/System.err(11295):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
  05-14 13:00:09.640: W/System.err(11295):    at java.lang.Thread.run(Thread.java:1019)
  </code></pre>
  
  <p>Could any one Suggest?</p>