2012-12-14 2 views
0

ListView에 이미지를 표시하려고합니다. 코드 조각 : 여기비트 맵을 사용할 때 아무 것도 얻지 않습니다.

private String[] movieURL = {"..","..",".."}; 

try { 
      Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(movieURL[position]).getContent()); 
      holder.image.setImageBitmap(bitmap); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (Exception e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 

는 클래스 ViewHolder입니다 :

private static class ViewHolder { 
    public TextView text1; 
    public TextView text2; 
    public ImageView image; 
    } 

그러나 그것은 아무것도 표시되지 않습니다. 나는 코드가 괜찮다고 생각한다. 그리고 스택 트레이스 :

12-14 07:50:54.975: D/dalvikvm(1865): GC_CONCURRENT freed 122K, 8% free 3082K/3324K, paused 4ms+28ms, total 123ms 
12-14 07:50:55.175: D/dalvikvm(1865): GC_FOR_ALLOC freed 16K, 8% free 3178K/3424K, paused 40ms, total 51ms 
12-14 07:50:55.195: I/dalvikvm-heap(1865): Grow heap (frag case) to 4.291MB for 1127536-byte allocation 
12-14 07:50:55.286: D/dalvikvm(1865): GC_FOR_ALLOC freed <1K, 6% free 4278K/4528K, paused 84ms, total 86ms 
12-14 07:50:55.395: D/dalvikvm(1865): GC_CONCURRENT freed <1K, 6% free 4279K/4528K, paused 10ms+20ms, total 118ms 
12-14 07:50:55.547: W/Trace(1865): Unexpected value from nativeGetEnabledTags: 0 
12-14 07:50:55.625: W/Trace(1865): Unexpected value from nativeGetEnabledTags: 0 
12-14 07:50:55.685: W/Trace(1865): Unexpected value from nativeGetEnabledTags: 0 
12-14 07:50:55.715: W/Trace(1865): Unexpected value from nativeGetEnabledTags: 0 
12-14 07:50:55.815: W/Trace(1865): Unexpected value from nativeGetEnabledTags: 0 
12-14 07:50:57.125: D/skia(1865): --- SkImageDecoder::Factory returned null 
12-14 07:50:57.875: D/skia(1865): --- SkImageDecoder::Factory returned null 
12-14 07:50:58.736: D/skia(1865): --- SkImageDecoder::Factory returned null 
12-14 07:50:59.386: D/skia(1865): --- SkImageDecoder::Factory returned null 
12-14 07:50:59.945: D/skia(1865): --- SkImageDecoder::Factory returned null 
+0

문제가 해결 될 것입니다. –

답변

0

은 당신도 Bitmap -object가 null가 아닌 확신이

holder.image.setImageBitmap(BitmapFactory.decodeFile(movieurl 
       .get(position))); 
+0

여전히 작동하지 않습니다. – user23256

0

같은 시도? 일부 로깅을 수행 ..

Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(movieURL[position]).getContent()); 

if(bitmap == null) { 
    Log.i("Aha!", "The Bitmap was null all this time :)"); 
} 

holder.image.setImageBitmap(bitmap); 

경우 Bitmap null의 경우, URL이 실제로 인출하려는 자원을 가리키는 지 확인하십시오.

또한, 귀하의 AndroidManifest.xml에서

<uses-permission android:name="android.permission.INTERNET"/> 

을 포함해야합니다. 그렇지 않으면 Bitmap 오류없이 null이 제공됩니다.

+0

내 Bitmap 개체가 null입니다. 어떻게 그럴 수 있니? – user23256

+0

'URL.getContent()'는 응답의 내용 유형이 알려지지 않은 경우 null을 반환합니다. 귀하의 요청의 다른 끝에 무엇입니까? – Ole

+0

URL과 같습니다. http://ia.media-imdb.com/images/M/[email protected]@._V1._SX54_CR0,0,54,74_.jpg – user23256

0

AsyncTask를 사용하여 웹에서 이미지를 다운로드하고 이미지 뷰에 표시하려면 아래 코드를 시도하면 문제가 해결됩니다.

public class MainActivity extends Activity { 

    ImageView mImgView1; 
    static Bitmap bm; 
    ProgressDialog pd; 
    String imageUrl = "https://www.morroccomethod.com/components/com_virtuemart/shop_image/category/resized/Trial_Sizes_4e4ac3b0d3491_175x175.jpg"; 
    BitmapFactory.Options bmOptions; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mImgView1 = (ImageView) findViewById(R.id.mImgView1); 
     pd = ProgressDialog.show(MainActivity.this, "Aguarde...", 
       "Carregando..."); 
     new ImageDownload().execute(""); 
    } 

    public class ImageDownload extends AsyncTask<String, Void, String> { 

     protected String doInBackground(String... params) { 
      // TODO Auto-generated method stub 
      bmOptions = new BitmapFactory.Options(); 
      bmOptions.inSampleSize = 1; 
      loadBitmap(imageUrl, bmOptions); 
      return imageUrl; 
     } 

     protected void onPostExecute(String imageUrl) { 
      pd.dismiss(); 
      if (!imageUrl.equals("")) { 
       mImgView1.setImageBitmap(bm); 
      } else { 
       Toast.makeText(MainActivity.this, 
         "Não foi possível obter resultados", Toast.LENGTH_LONG) 
         .show(); 
      } 
     } 

    } 

    public static Bitmap loadBitmap(String URL, BitmapFactory.Options options) { 
     InputStream in = null; 
     try { 
      in = OpenHttpConnection(URL); 
      bm = BitmapFactory.decodeStream(in, null, options); 
      in.close(); 
     } catch (IOException e1) { 
     } 
     return bm; 
    } 

    private static InputStream OpenHttpConnection(String strURL) 
      throws IOException { 
     InputStream inputStream = null; 
     URL url = new URL(strURL); 
     URLConnection conn = url.openConnection(); 

     try { 
      HttpURLConnection httpConn = (HttpURLConnection) conn; 
      httpConn.setRequestMethod("GET"); 
      httpConn.connect(); 

      if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) { 
       inputStream = httpConn.getInputStream(); 
      } 
     } catch (Exception ex) { 
     } 
     return inputStream; 
    } 
} 
관련 문제