2016-08-09 3 views
0

Я использую веб-сервис, чтобы получить список погоды из api.forecast.io. когда я получить значок строки параметров, я разбор значения строки иконок из API и получить значок ресурс из класса утилиты с viewholderResourceNotFoundException - Попытка получить значки на основе значения String

vh.icon.setImageResource(Utility.getIconfromWeatherCond(item.getIcon())); 

это метод getIconfromWeatherCond

public static int getIconfromWeatherCond (String icon) { 
    if (icon=="clear-day") { 
     return R.drawable.ic_clear; 
    } 
    else if (icon=="clear-night") { 
     return R.drawable.ic_clear; 
    } 
    else if (icon=="rain") { 
     return R.drawable.ic_rain; 
    } 
    else if (icon=="snow") { 
     return R.drawable.ic_snow; 

    } 
    else if (icon=="sleet") { 
     //hujan campur es 
     return R.drawable.ic_snow; 
    } 
    else if (icon=="wind") { 
     return R.drawable.ic_cloudy; 
    } 
    else if (icon=="fog") { 
     return R.drawable.ic_fog; 
    } 
    else if (icon=="cloudy") { 
     return R.drawable.ic_cloudy; 
    } 
    else if (icon=="partly-cloudy-day") { 
     return R.drawable.ic_light_rain; 
    } 
    else if (icon=="partly-cloudy-night") { 
     return R.drawable.ic_light_rain; 
    } 
    else if (icon=="hail") { 
     return R.drawable.ic_snow; 
    } 
    else if (icon=="thunderstorm") { 
     return R.drawable.ic_storm; 
    } 
    else if (icon=="tornado") { 
     return R.drawable.ic_storm; 
    } 
    return -1; 
} 

но когда Я пытаюсь запустить на своем устройстве, я получаю такую ​​ошибку. android.content.res.Resources $ NotFoundException: Идентификатор ресурса # 0xffffffff Что мне делать?

ответ

0

EDIT:

Код ваш getIconfromWeatherCond метод как это:

public static int getIconfromWeatherCond (String icon) { 

     switch (icon) { 
     case "clear-day": 
      return R.drawable.ic_clear; 
     case "clear-night": 
      return R.drawable.ic_clear; 
     case "rain": 
      return R.drawable.ic_rain; 
     case "snow": 
      return R.drawable.ic_snow; 
     case "sleet": 
      //hujan campur es 
      return R.drawable.ic_snow; 
     case "wind": 
      return R.drawable.ic_cloudy; 
     case "fog": 
      return R.drawable.ic_fog; 
     case "cloudy": 
      return R.drawable.ic_cloudy; 
     case "partly-cloudy-day": 
      return R.drawable.ic_light_rain; 
     case "partly-cloudy-night": 
      return R.drawable.ic_light_rain; 
     case "hail": 
      return R.drawable.ic_snow; 
     case "thunderstorm": 
      return R.drawable.ic_storm; 
     case "tornado": 
      return R.drawable.ic_storm; 
     default: 
      return -1; 
     } 
    } 

Проверка на "нет значка" значение:

int resId = Utility.getIconfromWeatherCond(item.getIcon()); 
    if (resId != -1) { 
     vh.icon.setImageResource(resId); 
    } else { 
     Log.d(TAG, "No image resource for icon: " + item.getIcon()); 
    } 

Теперь ваш LogCat скажет вам, какое значение у вас нет, но, зная, как работают эти удаленные службы, я уверен, что это просто будет пустым.

+0

Я получил данные, но изображение значка не загрузилось из R.drawable. *: 3. это мой Log.d "08-09 23: 11: 35.844 20206-20206/com.cahyo.wibowo.jalretrovit D/jajal: Нет изображения ресурс для значка: rain" – cahyowhy

+1

О, боже мой, я посмотрел на ваш код и не сделал даже не вижу! Базовая Java: вы не можете использовать == для сравнения строк. Я обновляю свой ответ. –

+0

Конечно, 'HashMap ' будет лучше, чем случай переключения на строки? –