#android #android-layout #android-imageview
#Android #android-макет #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_defau<
}
Приведенный выше код работает корректно.
Теперь я хочу добавить больше округов и флагов. Есть ли какой-либо способ уменьшить количество строк кода? Нравится return R.drawable.flag underscorise(teamName);
Комментарии:
1. imageFlagRight.setImageResource(getFlagResource(«Индия»)); В этой строке кода вы динамически передали india
2. Нет, в реальном времени это похоже
imageFlagRight.setImageResource(getFlagResource(anObjectFromMatchList.getTeamName()));
3. вам не нужен метод getFlagResource(), вы просто используете нижеприведенную строку обычно для всех изображений TeamImages imageFlagRight.setImageResource(R.drawable.flag_ TeamName); где TeamName — строка. Передал название команды и получил результат
4. @ Ayudh вы не можете просто добавить вот так
Ответ №1:
String name="flag_" "india";
public int getFlagResource(Context context, String name) {
int resId = context.getResources().getIdentifier(name, "drawable", "com.mypackage.namehere");
return resId;
}
Попробуйте этот.
Ответ №2:
Вы должны сохранить название страны и R.id Значения….
Когда вы хотите получить эти значения и отобразить их
Ответ №3:
При участии @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_defau<
}
Ответ №4:
<yourimageview>.setImageViewResource(getFlagResource("india"));