动态设置ImageView的源

Mit*_*ran 4 android android-layout android-imageview

我正在尝试根据国家/地区名称在ImageView中设置国家/地区标志.

我遵循以下惯例:国家标志图像始终存储在 drawable/flag_country_name

例如; drawable/flag_india,drawable/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;
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常.

现在我想添加更多的县和旗帜.有没有办法减少代码行?喜欢 return R.drawable.flag+underscorise(teamName);

Sau*_*eek 6

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

试试这个吧.