2011-04-07 47 views
3

我試圖根據國家/地區名稱在ImageView中設置國家/地區標誌。動態設置ImageView的來源

我遵循該國國旗圖像總是存儲在drawable/flag_country_name

EG的約定;繪製/ 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 2011-04-07 05:03:41

+0

沒有實時它像'imageFlagRight.setImageResource(getFlagResource(anObjectFromMatchList.getTeamName()));' – 2011-04-07 05:27:46

+0

你不需要getFlagResource()方法,你只需要使用下面的行所有TeamImages imageFlagRight.setImageResource(R.drawable.flag_ + TeamName); TeamName是string.Passed團隊名稱並獲得結果 – Ayudh 2011-04-07 05:45:19

回答

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

試試這一個。

+0

你試過嗎? – 2011-04-07 06:03:49

+0

是的,只是修改它和戈爾工作 – 2011-04-07 06:26:24

1

u必須存放國名和R.id價值觀....

當U想獲得這些數據並顯示它

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

隨着從@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; 
    } 
相關問題