Establecer dinámicamente el origen del ImageView

Estoy intentando fijar banderas de país en un ImageView según el nombre del país.

Sigo la convención que la imagen de la bandera del país se almacena siempre en drawable/flag_country_name

por ejemplo; dibujable / flag_india, dibujable / flag_south_africa

El código que he escrito hasta ahora es

 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; } 

El código anterior funciona correctamente.

Ahora quiero agregar más condados y banderas. ¿Hay alguna manera de reducir las líneas de código? como return R.drawable.flag+underscorise(teamName);

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

Prueba éste.

U tiene que almacenar el nombre del país y los valores de R.id ….

Cuando quieras obtener esos valores y mostrarlo

Con la entrada de @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; } 
 <yourimageview>.setImageViewResource(getFlagResource("india")); 
  • Programa Android para acercar y alejar con la ayuda de seekbar?
  • Cómo cargar un ImageView con un archivo png sin usar "setImageBitmap ()"?
  • Cómo obtener el tamaño del mapa de bits después de mostrarlo en ImageView
  • Anchura máxima y altura para ImageView en Android
  • ¿Cómo cambiar la imagen ImagView continuamente?
  • Recortar imagen a cuadrado - Android
  • ImageView carga la imagen de alta resolución como muy mala calidad
  • Correspondencia entre las coordenadas de ImageView y Pixeles de mapa de bits - Android
  • Android - Crossfade mutiple imágenes en un ImageView
  • Cómo configurar un efecto ripple en textview o imageview en Android?
  • Cómo convertir BitmapDescriptor en drawable en android para imageview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.