Android String nombre moldeada a R.drawable.name

MachineLearner:

Dentro de mi aplicación para Android, que necesito para crear una función dentro de una clase MyAdapterque se utiliza dentro de la actividad MyActivity(que no es el MainActivity). La función debe tener la siguiente estructura

public int getDrawableResourceId(String name) {
    // naive explanation
    return R.drawable. + name
}

Por ejemplo si llamo getDrawableResorceId("test")debe devolver el valor entero de R.drawable.test. No puedo trabajar con int drawableResourceId = getResources().getIdentifier(name, "drawable", getPackageName());debido Android Studio me dice que no puede resolver los métodos getResources()y getPackageName(). Si sustituyo con

int drawableResourceId = MyActivity.this
                                   .getResources()
                                   .getIdentifier(name, "drawable", MyActivity.this.getPackageName());

o

int drawableResourceId = MainActivity.this
                                     .getResources()
                                     .getIdentifier(name, "drawable", MainActivity.this.getPackageName());

Android Studio me dice que la actividad no es una clase envolvente. Es por eso que quiero directamente a emitir la cadena en R.drawable.name.

Miguel :

Lo siento, editado mi respuesta, dieron mal la pregunta en mente:

public static int getDrawable(Context context, String name) {
   return context.getResources().getIdentifier(name, "drawable", context.getPackageName());
}

actualización *

Ya que estás en un adaptador Digamos que usted tiene MyAdapter como nombre de la clase hace:

public class MyAdapter{

    private Context mContext;

    public MyAdapter(Context context){
        mContext = context;
    }
....

Entonces, usted puede llamar fácilmente:

getDrawable(mContext, "name")

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=404178&siteId=1
Recomendado
Clasificación