2011-04-07 9 views
3

국가 이름에 따라 ImageView에 국가 플래그를 설정하려고합니다.ImageView의 소스를 동적으로 설정합니다.

내가 그 나라의 국기 이미지가 항상 drawable/flag_country_name 예에 대한

에 저장되어있는 규칙을 다음과

; 드로어 블/사진 flag_india, 드로어 블/사진 flag_south_africa는

내가 지금까지 작성한 코드는 위의 코드가 제대로 작동

imageFlagRight.setImageResource(getFlagResource("India")); 

private int getFlagResource(String teamName) { 
     if(teamName.equals("India")){ 
      return R.drawable.flag_india; 
     } 
     if(teamName.equals("Srilanka")){ 
      return R.drawable.flag_srilanka; 
     } 
     if(teamName.equals("New Zealand")){ 
      return R.drawable.flag_new_zealand; 
     } 
     if(teamName.equals("Pakistan")){ 
      return R.drawable.flag_pakistan; 
     } 
     if(teamName.equals("Srilanka")){ 
      return R.drawable.flag_srilanka; 
     } 
     if(teamName.equals("South Africa")){ 
      return R.drawable.flag_south_africa; 
     } 
     if(teamName.equals("Austalia")){ 
      return R.drawable.flag_australia; 
     } 
     return R.drawable.flag_default; 
    } 

입니다.

이제 카운티와 깃발을 더 추가하고 싶습니다. 코드 줄을 줄이는 방법이 있습니까? 같은 return R.drawable.flag+underscorise(teamName);

+0

imageFlagRight.setImageResource (getFlagResource ("인도"))로부터의 입력에 – Ayudh

+0

실시간으로 'imageFlagRight.setImageResource (getFlagResource (anObjectFromMatchList.getTeamName()));)와 같지 않습니다. –

+0

getFlagResource() 메서드가 필요하지 않습니다. 모든 TeamImages imageFlagRight.setImageResource (R.drawable.flag_ + TeamName); TeamName은 string.Passed 팀 이름과 결과를 얻을 – Ayudh

답변

6
String name="flag_" + "india"; 
public int getFlagResource(Context context, String name) { 
    int resId = context.getResources().getIdentifier(name, "drawable", "com.mypackage.namehere"); 
    return resId; 
} 

이 하나를 시도 표시하려는 경우. @Saurabh Pareek

private int getFlagResource(String teamName) { 
     String flagString = "flag_"+teamName.replace(" ", "_").toLowerCase(); 
     int resId = getContext().getResources().getIdentifier(flagString, "drawable", "com.mypackage.namehere"); 
     if(resId != 0){ 
      return resId; 
     } 
     return R.drawable.flag_default; 
    } 
+0

당신이 이것을 시도 했습니까 ?? –

+0

예, 그냥 수정하고 작동합니다. –

1

U 나라 이름과 R.id 값을 저장해야합니다 ....

u는 그 값을 얻을 그리고 그것은

0
<yourimageview>.setImageViewResource(getFlagResource("india")); 
1

; 이 코드 줄에서 동적으로 인도를 전달했습니다.
관련 문제