2016-04-12 5 views
0

Ich habe über 100 Bilder in meiner Zeichnung. Es ist im Grunde eine Kategorie. Ich rufe Daten vom Server an, wo eine Spalte eine Kategorie enthielt. Meine Bilder wurden als cat_image1, cat_image2, cat_image3 usw. benannt. Der Server sendet die entsprechenden srting als Image1, Image2, Image3 etc. Ich denke, es ist nicht die Art und Weise, was ich so etwas wie diesesSet Android Image nach Zeichenfolge

String catString = someJSONObject.getString(Config.POI_CATEGORY); 

if (catString == "image1") { 
    someView.setImage(getResources().getDrawable(R.mipmap.image1)); 
} 

else if (catString == "image2") { 
     someView.setImage(getResources().getDrawable(R.mipmap.image2)); 
    } 

else if (catString == "image3") { 
     someView.setImage(getResources().getDrawable(R.mipmap.image3)); 
    } 

... 
... 
... 
+0

können Sie String so vergleichen, ändern Sie sich mit diesem if (catString.equals ("image1")) {// mach deine Sachen} –

+0

Mögliches Duplikat von [Wie kann ich in meinem Fall auf die Ressource mit dynamischem Namen zugreifen?] (http://stackoverflow.com/questions/6583843/how- to-access-resource-with-dynamic-name-in-meinem-fall) –

+0

Ich denke, du solltest diese 100 Bilder auf deinem Server speichern und die URL dieser Bilder zurückgeben und dann das Bild entsprechend setzen –

Antwort

1

Versuchen tue:

// catString = cat -> R.drawable.cat 
int imageId = getResources().getIdentifier(catString, "drawable", getPackageName()); 
someView.setImage(imageId)); 

Wenn Sie dies ein Präfix verwenden müssen:

// catString = cat -> R.drawable.ic_cat 
int imageId = getResources().getIdentifier("ic_" + catString, "drawable", getPackageName()); 
someView.setImage(imageId)); 

Sie können auch eine HashMap verwenden :

HashMap<String, Integer> hm = new HashMap<>(); 
// Put elements to the map 
hm.put("cat", R.drawable.ic_some_cat_image); 
hm.put("other cat", R.drawable.ic_other_cat); 

for (int i = 0; i < typeofplace.length; i++) { 
    // You might want to check if it exists in the hasmap 
    someView.setImage(hm.get(catString)); 
} 
+0

Ich vergaß eine andere Sache. Ich hatte ein Präfix wie "ic_image1" in drawable. Wie kann ich es dann nennen? –

+1

Siehe Bearbeiten, Sie können zum Beispiel auch 'HashMap' verwenden. Oder Sie können dem zeichnbaren Namen 'getResources() vorangestellt werden. GetIdentifier (" ic_ "+ catString," drawable ", getPackageName())' – Exaqt