Могу ли я проверить «рисование», взятое из Url Stream, на наличие правильной иконки? - PullRequest
1 голос
/ 10 февраля 2012

Я работаю над кэшированием изображений моего списка. Я использовал решение от здесь

У меня проблема в том, как установить изображение по умолчанию, если значок не существует?

URL-адрес изображений возвращает серверную страницу, на которой изображение не существует на сервере. Так что я предполагаю, что эта HTML-страница затем каким-то образом преобразуется в неисправный Drawable ->, чтобы исключение IOexception не происходило (так как возвращаются некоторые данные).

Могу ли я протестировать "drawable" на предмет правильности иконки?

или, может быть, моя логика здесь неверна. Пожалуйста, сообщите

Код из ListViewAdapter:

     try {
            URL url = new URL("http:// some image url here.jpg");
            URLConnection connection = url.openConnection();
            connection.setUseCaches(true);
            Drawable drawable = Drawable.createFromStream(connection.getInputStream(), "src");

            viewHolder.icon.setImageDrawable(drawable);
            } catch (IOException e) {
                viewHolder.icon.setImageResource(R.drawable.defaulticon);
            }

1 Ответ

0 голосов
/ 10 февраля 2012

Ваша переменная drawable будет null, если она не может быть декодирована из потока. Проверьте значение null и установите изображение по умолчанию.

Drawable drawable = null;
try {
    URL url = new URL("http:// some image url here.jpg");
    URLConnection connection = url.openConnection();
    connection.setUseCaches(true);
    // try to load and decode
    drawable = Drawable.createFromStream(connection.getInputStream(), "src");

    if(drawable != null) // if succeed - set drawable
        viewHolder.icon.setImageDrawable(drawable);
} catch (IOException e) {
    // ignore IOException if any...
} finally {
    if(drawable == null) // If drawable are null (not decoded or failed to load (404?))
        viewHolder.icon.setImageResource(R.drawable.defaulticon); // set default image
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...