2012-12-04 143 views
0

我在這裏有一個問題。BitmapFactory.decodeStream(輸入)總是返回null

我有一些圖像的URL列表中的

agenda.get(i).getPicture() // always return a good image url 

在一個線程我這樣做:

for (int i = 0; i < agenda.size(); i ++) 
     { 
      Log.e("TEST", " = " +agenda.get(i).getPicture()); 
      Bitmap newBitmap = getBitmapFromURL(agenda.get(i).getPicture()); // getPicture return the url 
      imagelist.add(i,newBitmap); 
     } 

而且getBitmapFromURL返回空的原因:

BitmapFactory.decodeStream(input) 

private Bitmap getBitmapFromURL(final String src) { 
    Runnable r=new Runnable() 
    { 
     public void run() { 
      try { 
       URL url = new URL(src); 
       HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
       connection.setDoInput(true); 
       connection.connect(); 
       InputStream input = connection.getInputStream(); 
       myBitmap = BitmapFactory.decodeStream(input); 
       connection.disconnect(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
    }; 
    return myBitmap; 
} 

現在,如果有人有一個想法PLZ! 謝謝

編輯!

這有可能是

InputStream input = connection.getInputStream(); 

不能太...我不知道爲什麼

+0

必須調用r.run(),或創建一個線程,這個Runnable接口,並運行線程 – Gerhard

+0

您還沒有實際運行,您已經創建了'Runnable'。你還沒有定義變量'myBitmap'(它必須是'final')。另外,即使你在你的runnable上調用了'run()',它也只是針對當前線程運行它,並且你不會得到任何異步行爲。 –

+0

我試過了,結果保持不變 – F4Ke

回答

0

參考這個環節,這是件好事,快速和簡單。

http://loopj.com/android-smart-image-view/

+0

這很酷,但圖像隨機出現 – F4Ke

+0

但你爲什麼在那裏使用線程?它適用於我。圖像的顯示取決於下載的圖像,有些圖像下載速度更快,因此它會比其他圖像查看更快,但是一旦所有圖像加載完畢,圖像的順序就會正確。 – VIGNESH