2011-03-10 16 views
29

Tengo una lista de entradas y algunos archivos de mapa de bits en el directorio res/drawable-mdpi. Estoy intentando cargar la imagen correspondiente al valor de cadena seleccionado de la lista generando una cadena de ruta y utilizando la fábrica de mapa de bits. El problema es que no creo que mi camino sea correcto porque el mapa de bits siempre es nulo, incluso para la imagen predeterminada.¿Cómo establecer una imagen de imageView desde una cadena?

String name = entries.get(position); 
      String img = "res/drawable/logo_" + name.toLowerCase() + ".png"; // create the file name 
      icon.setScaleType(ImageView.ScaleType.CENTER_CROP); 

      // check to see if the file exists 
      File file = new File(img); 
      if (file.exists()){ 

       bm = BitmapFactory.decodeFile(img); 
      } 
      else{// use the default icon 
       bm = BitmapFactory.decodeFile("logo_default.png"); 
      } 

      // set the image and text 
      icon.setImageBitmap(bm); 

¿El directorio de res incluso se copia en el dispositivo? ¿Cuál es el camino correcto que debería usar, o debería hacerlo de otra manera?

Gracias

+1

usted debe leer acerca de cómo androide recursos manijas: http: // developer.android.com/guide/topics/resources/index.html – WarrenFaith

+0

gracias, eso explica mucho. – Matt

Respuesta

46

si usted tiene la imagen en la carpeta estirable que va de este por el camino equivocado.

intentar algo como esto

Resources res = getResources(); 
String mDrawableName = "logo_default"; 
int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName()); 
Drawable drawable = res.getDrawable(resID); 
icon.setImageDrawable(drawable); 
+2

'getDrawable()' está privado. –

+1

try Drawable drawable = ContextCompat.getDrawable (getContext(), resID); –

12

No hay necesidad de utilizar getDrawable() se utiliza directamente el identificador de recurso como

String mDrawableName = "myimageName"; int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName()); imgView.setImageResource(resID);

Cuestiones relacionadas