Динамически устанавливаемый Источник ImageView - PullRequest
4 голосов
/ 07 апреля 2011

Я пытаюсь установить флаги страны в 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 ]

6 голосов
/ 07 апреля 2011
String name="flag_" + "india";
public int getFlagResource(Context context, String name) {
   int resId = context.getResources().getIdentifier(name, "drawable", "com.mypackage.namehere");
   return resId;
}

Попробуйте это.

1 голос
/ 07 апреля 2011

С вводом @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;
    }
1 голос
/ 07 апреля 2011

Вам нужно сохранить название страны и значения R.id ....

Когда вы хотите получить эти значения и отобразить их

0 голосов
/ 07 апреля 2011
<yourimageview>.setImageViewResource(getFlagResource("india"));
...