2012-12-04 2 views
0

여기에 문제가 있습니다.BitmapFactory.decodeStream (입력) 항상 null을 반환합니다.

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); 
     } 

와의 null의 원인을 돌려 getBitmapFromURL :에

BitmapFactory.decodeStream(input) 

을 :

나는 내가 이렇게 스레드에서 목록

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

일부 이미지 URL을

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 아이디어가 있다면! 감사합니다.

EDIT!

그것은 내가

+0

당신은 당신은 실제로 당신이 만든'Runnable'를 실행하지 않은 (r.run 전화) 또는이의 Runnable로, 스레드를 생성하고 스레드 – Gerhard

+0

를 실행해야합니다. 변수'myBitmap'도 정의하지 않았습니다 ('final'이어야합니다). 또한, runnable에서'run()'을 호출하더라도, 현재 스레드에 대해서만 run을 수행 할 것이고, 비동기 동작을 얻지 못할 것이다. –

+0

시도한 결과가 동일하게 유지됨 – F4Ke

답변

0

이 링크를 참조 이유를 알고하지 않습니다 ...

InputStream input = connection.getInputStream(); 

도 실패 할 가능성이 있습니다, 그것은 좋은 빠르고 간단합니다.

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

+0

멋진데 이미지가 무작위로 나타납니다 – F4Ke

+0

하지만 왜 거기에 스레드를 사용하고 있습니까? 그것은 나를 위해 잘 작동합니다. 나타나는 이미지는 다운로드 한 이미지에 따라 다르며 일부는 더 빨리 다운로드되므로 다른 이미지보다 빠르게 이미지 뷰로 설정되지만 일단 모든 이미지가로드되면 올바른 순서로 표시됩니다. – VIGNESH