2012-01-20 2 views
0

Я показываю изображение в представлении изображения, которое получается из Интернета. Проблема заключается в том, что он не отображается постоянно, если я просматриваю эту страницу 5 раз только 3 или 4 раза, когда изображение отображается (каждый раз, когда я загружаю изображение из Интернета). Как я могу отображать его каждый раз.Загрузка изображения из Интернета отображается неправильно?

public Bitmap getDrawable(String url) throws MalformedURLException, IOException { 
     Bitmap x; 

     HttpURLConnection connection = (HttpURLConnection)new URL(url) .openConnection(); 

     connection.connect(); 
     InputStream input = connection.getInputStream(); 

     x = BitmapFactory.decodeStream(input); 
     return x; 
    } 

for (int i = 0; i < imageSourceArray.length - 1; i++) { 
     detailedArticleImageViewArray[i] = new ImageView(
      ArticleActivity.this); 
     System.out.println(TMI + imageSourceArray[i + 1]); 
     Bitmap image = getDrawable(TMI + imageSourceArray[i + 1]); 
     detailedArticleImageViewArray[i].setImageBitmap(image); 
     detailedArticleImageViewArray[i].setLayoutParams(new LayoutParams(
      LayoutParams.MATCH_PARENT, 250)); 
     detailedArticleImageViewArray[0].setPadding(5, 10, 10, 5); 
       } 

Я получаю IOException буферизацией InputStream закрыт ...

Еще одной причиной является декодированием возвращение нулевой или ложь ...

заранее спасибо ..

ответ

0

Если вы пытаетесь отобразить изображение из url, затем используйте это.

Bitmap mbmp = BitmapFactory.decodeStream(new java.net.URL("urlname").openStream()); 
Imageview_ref.setImageBitmap(mbmp); 

I thnk нет необходимости скачивать каждый раз, пока не будет отображаться изображение.

+0

Это не проблема здесь я получаю «IOException BufferedInput поток закрыт» ошибка, когда я вновь открыть страницу он показывает изображение ... –

+0

Bitmap mbmp = BitmapFactory.decodeStream (новый . java.net.URL ("URLNAME") OpenStream()); в этой строке Я получаю IOExcetion –

+0

Я напечатал изображение url его ok не null? –

0

использовать этот класс

static class FlushedInputStream extends FilterInputStream { 
    public FlushedInputStream(InputStream inputStream) { 
     super(inputStream); 
    } 

    @Override 
    public long skip(long n) throws IOException { 
     long totalBytesSkipped = 0L; 
     while (totalBytesSkipped < n) { 
      long bytesSkipped = in.skip(n - totalBytesSkipped); 
      if (bytesSkipped == 0L) { 
       int b = read(); 
       if (b < 0) { 
        break; // we reached EOF 
       } else { 
        bytesSkipped = 1; // we read one byte 
       } 
      } 
      totalBytesSkipped += bytesSkipped; 
     } 
     return totalBytesSkipped; 
    } 
} 
Смежные вопросы