Загрузка изображения из интернета не отображается должным образом? - PullRequest
0 голосов
/ 20 января 2012

Я показываю изображение в виде изображения, полученного из Интернета.Проблема заключается в том, что он не отображается постоянно, если я просматриваю эту страницу 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 закрыт ...

Еще одна причина - декодирование, возвращает ноль или ложь ...

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

Ответы [ 2 ]

0 голосов
/ 05 июня 2012

используйте этот класс

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;
    }
}
0 голосов
/ 20 января 2012

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

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

Я думаю, нет необходимости каждый раз загружать для отображения изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...