2016-08-09 4 views
0

웹 서비스를 사용하여 api.forecast.io에서 날씨 목록을 가져옵니다. 내가 매개 변수 문자열 아이콘을 얻을 때, 내가 API의 문자열 아이콘 값을 구문 분석하고 viewholder와 클래스 유틸리티에서 아이콘 리소스를 얻을 수 있어요ResourceNotFoundException - 문자열 값을 기반으로 아이콘을 얻으려고 시도합니다.

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; 
} 

하지만 위한 방법입니다 내 장치에서 runing하려고 iam이 같은 오류가 발생합니다. android.content.res.Resources $ NotFoundException : 리소스 ID # 0xffffffff 어떻게해야합니까 ??

답변

0

편집 :

코드이처럼 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()); 
    } 

는 이제 로그 캣은 어떤 값을 알려줍니다 당신은 가지고 있지 않지만, 이러한 원격 서비스가 어떻게 작동하는지 알면, 나는 그것이 공백이 될 것이라고 확신합니다.

+0

데이터를 받았지만 아이콘 이미지가 R.drawable. * : 3에서로드되지 않았습니다. 이것은 내 Log.d입니다. "08-09 23 : 11 : 35.844 20206-20206/com.cahyo.wibowo.jalretrovit D/jajal : 아이콘에 대한 이미지 리소스 없음 : rain" – cahyowhy

+1

Oh yeah dear god, 나는 당신의 코드를 보았습니다. 그것도 보지 마! 기본 자바 : 문자열을 비교하기 위해 ==를 사용할 수 없습니다. 내 대답을 업데이트 중입니다. –

+0

확실히 HashMap 는 문자열의 switch-case보다 좋을까요? –

관련 문제