4

我正在尝试根据国家名称在 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);

4

4 回答 4

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

试试这个。

于 2011-04-07T05:08:50.407 回答
1

你必须存储国家名称和 R.id 值....

当你想要获得这些值并显示它时

于 2011-04-07T05:00:30.100 回答
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;
    }
于 2011-04-07T06:27:30.713 回答
0
<yourimageview>.setImageViewResource(getFlagResource("india"));
于 2011-04-07T05:05:08.210 回答