4

国名に従って 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;
    }

上記のコードは正しく動作します。

今、私はさらに郡と旗を追加したいと考えています。コード行を減らす方法はありますか? お気に入り 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

@SaurabhPareekからの入力で

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 に答える
1

国名とR.id値を保存する必要があります....

これらの値を取得して表示したい場合

于 2011-04-07T05:00:30.100 に答える
0
<yourimageview>.setImageViewResource(getFlagResource("india"));
于 2011-04-07T05:05:08.210 に答える