2010-07-18 20 views
10

esta es mi primera vez aquí (me parece que el sitio web es muy útil). Soy nuevo en Android y necesito descubrir por qué no puedo cargar dinámicamente imágenes en mi vista de lista.drawable getResources(). Problema getIdentifier

que tengo tres matrices de cadenas:

private String lv_arr[]={"News", 
     "Events", 
     "Other"}; 
private String lv_arr_d[]={"Get the latest news", 
     "Latest events", 
     "Other description here"}; 
private String lv_arr_icons[]={"news", "events", "other"}; 

Mi lista muestra un icono a la izquierda y dos líneas de texto a la derecha de cada elemento de la lista. Funciona bien cuando codigo el nombre de la imagen (por ejemplo, noticias).

ArrayList <HashMap <String, Object>> users = 
    new ArrayList <HashMap <String, Object>>(); 
    int l = lv_arr.length; 
    for (int i = 0; i <l; i++) { 
    HashMap <String, Object> user = new HashMap <String, Object>(); 

    //get icons 
    String uri = "drawable/"+lv_arr_icons[i]; 

    user.put ("icon", (Drawable)getResources().getDrawable(
      getResources().getIdentifier(uri, null, getPackageName()))); 
//the above works ok if i set R.drawable.news 
    user.put ("label", lv_arr[i].toString()); 
    user.put ("description", lv_arr_d[i].toString()); 
    users.add (user); 
    } 

    String[] names = {"icon", "label", "description"}; 
    int[] views = {R.id.icon, R.id.label, R.id.description}; 

    SimpleAdapter saImageItems = new SimpleAdapter(this.getApplicationContext(), 
      users, R.layout.optionslistitem, names, views); 
     lv1.setAdapter(saImageItems); //lv1 is my ListView 

Todas las imágenes están en la carpeta dibujable. ¿Alguna idea de por qué no se carga ninguna imagen cuando trato de pasar su nombre y obtenerlos de los recursos?

Respuesta

27

¿Qué pasa si usted acaba de hacer esto:

user.put ("icon", getResources().getIdentifier(uri, "drawable", getPackageName())); 
+0

funciona como un encanto. gracias. – NickOpris

9

aquí es una función auxiliar

public static int getDrawable(Context context, String name) 
{ 
    Assert.assertNotNull(context); 
    Assert.assertNotNull(name); 

    return context.getResources().getIdentifier(name, 
      "drawable", context.getPackageName()); 
} 
+0

¡Trabajos !. ¡Muchas gracias! – KinGPinG

Cuestiones relacionadas