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
- Cómo establecer un texto sobre una imagen?
- Android Image Dialog / Popup
- Cómo girar / voltear androide imageView?
- Tome la foto con la intención de la cámara y la pantalla en imageView o textView?
- Tome la foto de lo que hay dentro de los límites de superposición
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);
- Android cambia la imagen de fondo con la animación de entrada / salida
- Cómo obtener la imagen del servicio web a la aplicación Android
- Dibujo de una cabeza de flecha en android
- Android O: Recurso no encontrado para for API lower and Android O
- Cómo hacer una transición suave de una imagen a otra
- ¿Cómo comprobar que si la vista de imagen contiene bitmap o no?
- Cómo cargar la imagen del GIF en el marcador de posición de Glide / Picasso / Ion etc
- Rotar un ImageView como una brújula (con el "polo norte" puesto en otro lugar)
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"));
- Android actualiza la aplicación de mercado con una clave de firma diferente
- ¿Cómo configurar un peso de fuente personalizado?