si he entendido bien, desea mostrar un recurso de imagen de una cadena. Lo hago en una aplicación donde el usuario puede elegir una imagen de un ListPreference personalizado y se muestra en el diseño de MainActivity. La ID del recurso dibujable se almacena en las Preferencias Compartidas como una cadena que coincide con el ejemplo del ID del recurso dibujable (Cadena): "@ drawable/logo_image". Saco el valor de la ListPreference con:
SharedPreferences shared = getSharedPreferences("com.joshuariddle.recoveryworkscounter.settings", MODE_PRIVATE);
String logo_id = (shared.getString("pref_logo",""));
Esto devuelve el recurso estirable como una cadena, es decir @ dibujable/LOGO_IMAGE. Luego de insertar que estirable/imagen en mi diseño que utilizo:
ImageView iv_logo = (ImageView) findViewById(R.id.imgLogo);
iv_logo.setImageResource(getResources().getIdentifier(logo_id, "drawable", "com.yourpackage"));
Esto cambiará el recurso ImageView a la nueva estirable con setImageResource() con el int devuelto por el método siguiente que devuelve un ID (int) de una cadena que representa el recurso estirable en com.yourpackage:
getResources().getIdentifier(logo_id, "drawable", "com.yourpackage")
también puede utilizar este mismo método para cambiar otros recursos que utilizan estirable como Disposición fondos etc. Sólo tienes que utilizar este método para obtener el ID como un int:
getResources().getIdentifier("Resource Id String", "drawable", "com.yourpackage")
Darn, vencerme por 26 segundos :) –
@MohitDeshpande: jajajajaja pasa todo el tiempo. – Cristian
Sí, esto funciona genial. Olvidé que R.etc devuelve Ints:/¡Gracias! – blackaardvark