2012-10-06 46 views
0

我试图检索服务器上的图片。所以我想用个以下方法检索它:在Android应用上显示图片

static Bitmap downloadBitmap(String url) { 
    final AndroidHttpClient client = AndroidHttpClient.newInstance("Android"); 
    final HttpGet getRequest = new HttpGet(url); 

    try { 
     HttpResponse response = client.execute(getRequest); 
     final int statusCode = response.getStatusLine().getStatusCode(); 
     if (statusCode != HttpStatus.SC_OK) { 
      Log.w("ImageDownloader", "Error " + statusCode + " while retrieving bitmap from " + url); 
      return null; 
     } 

     final HttpEntity entity = response.getEntity(); 
     if (entity != null) { 
      InputStream inputStream = null; 
      try { 
       inputStream = entity.getContent(); 
       final Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 
       return bitmap; 
      } finally { 
       if (inputStream != null) { 
        inputStream.close(); 
       } 
       entity.consumeContent(); 
      } 
     } 
    } catch (Exception e) { 
     // Could provide a more explicit error message for IOException or IllegalStateException 
     getRequest.abort(); 
    } finally { 
     if (client != null) { 
      client.close(); 
     } 
    } 
    return null; 
} 

然后在另一个方法我有以下两行:

 ImageView e = (ImageView) findViewById(R.id.img); 
     e.setImageBitmap(downloadBitmap(img_url(param1.img))); 

和XML

 <?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
    <!-- Name Label --> 
    <ImageView 
     android:id="@+id/img" 
     android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:contentDescription="@string/picture">   
    </ImageView> 

但是图片没有显示,我也没有收到任何错误。 谁能告诉我我做错了什么?

+0

你确定你提供的网址是正确的吗?而且它确实包含一个图像? –

+0

嗨Vishwa。是的,我对网址和图片100%确定。 –

回答

0

我会推荐使用库'Universal Image Loader'来显示图像。

+0

通用图像加载器在Android上始终是不错的选择。上面编写的代码将在加载大图像或多个图像时开始出现OutOfMemeory异常。 – Sharj

0

我会通过添加日志语句这个catch语句开始:

} catch (Exception e) { 
    // Could provide a more explicit error message for IOException or IllegalStateException 
    getRequest.abort(); 
} 

这可能是因为它抛出了另一个异常在那里,你不知道的。