2016-08-09 232 views
0

Ich benutze Web-Service, um Wetterliste von api.forecast.io zu bekommen. wenn ich die Parameter-String-Symbol zu erhalten, i die Zeichenfolge Symbol Wert von api bin Parsen und das Symbol Ressource von Klasse-Dienstprogramm mit viewholderResourceNotFoundException - Versuchen, Symbole basierend auf String-Wert zu erhalten

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

dies ist für 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; 
} 

Methode erhalten, aber wenn Iam versucht, auf meinem Gerät zu laufen, bekomme ich Fehler wie folgt. android.content.res.Resources $ NotFoundException: Ressourcen ID # 0xffffffff was soll ich tun ??

Antwort

0

EDIT:

-Code Ihre getIconfromWeatherCond Methode wie folgt:

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

prüfen "kein Symbol" Wert:

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

Jetzt Ihr logcat wird Ihnen sagen, was Wert Sie wissen nicht, wie diese Remote-Dienste funktionieren, aber ich wette, es wird einfach leer bleiben.

+0

Ich habe die Daten, aber das Symbol Image nicht geladen von R.drawable. *: 3. das ist mein Log.d "08-09 23: 11: 35.844 20206-20206/com.cahyo.wibowo.jalretrovit D/jajal: Keine Bildressource für Icon: Regen" – cahyowhy

+1

Oh lieber Gott, ich habe deinen Code angeschaut und didn Sieh es nicht! Basic Java: Sie können nicht == verwenden, um Strings zu vergleichen. Ich aktualisiere meine Antwort. –

+0

Sicherlich wäre eine 'HashMap ' besser als ein switch-case für Strings? –