2012-09-28 17 views
12

Mam imageView, że chcę wyświetlić małą ikonkę kraju, w którym się aktualnie znajdujesz. Mogę pobrać kod kraju, ale problem polega na tym, że nie mogę dynamicznie zmieniać zasobu imageView. Moje pliki obrazów są małe (Przykład: kod kraju = US, plik = us image)Android ImageView setImageResource w kodzie

mojego kodu (countryCode jest obecny countryCode wielkimi literami):

String lowerCountryCode = countryCode.toLowerCase(); 
    String resource = "R.drawable." + lowerCountryCode; 
    img.setImageResource(resource); 

Teraz oczywiście nie będzie to działa, ponieważ setImageResource chce int, więc jak mogę to zrobić? góry dzięki: D

Odpowiedz

27

Prostym sposobem na mapę, która nazwę kraju, że masz do int być stosowane w sposobie setImageResource jest:

int id = getResources().getIdentifier(lowerCountryCode, "drawable", getPackageName()); 
setImageResource(id); 

Powinieneś jednak spróbować użyć różnych zasobów folderów dla krajów, które chcesz obsłużyć.

+0

Wielkie dzięki, działało idealnie :) – arielschon12

+0

Pracował świetnie. Dzięki. – rsc

-3

można spróbować w ten sposób: -

myImgView.setImageDrawable(getResources().getDrawable(R.drawable.image_name)); 
+0

to nie pomogło, getDrawable() chce int a także gdy jestem dostarczaniu " R.Drawable.image_name "jako zmienna łańcuchowa. Jakikolwiek sposób? – arielschon12

0

użyć tego kodu

ImageView[] ivCard = new ImageView[1]; 

@override  
protected void onCreate(Bundle savedInstanceState) 

ivCard[0]=(ImageView)findViewById(R.id.imageView1); 
+0

Nie jest to związane z pytaniem i nie kompiluje ... – Karu

15

Ustawianie obrazu na ImageView z setImageResource() metody:

ImageView myImageView = (ImageView)v.findViewById(R.id.img_play); 
// supossing to have an image called ic_play inside my drawables. 
myImageView.setImageResource(R.drawable.ic_play); 
Powiązane problemy