web-dev-qa-db-fra.com

Comment définir une image imageView à partir d'une chaîne?

J'ai une liste d'entrées et des fichiers bitmap dans le répertoire res/drawable-mdpi. J'essaie de charger l'image correspondant à la valeur de chaîne sélectionnée dans la liste en générant une chaîne de chemin et en utilisant une fabrique d'images bitmap Le problème est que je ne pense pas que mon chemin est correct, car l'image bitmap est toujours nulle, même pour l'image par défaut.

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);

Le répertoire res est-il même copié sur le périphérique? Quel est le chemin correct que je devrais utiliser ou devrais-je m'y prendre différemment?

Merci

31
Matt

si vous avez l'image dans le dossier pouvant être dessiné, vous vous y trompez.

essayez quelque chose comme ça

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

Pas besoin d'utiliser getDrawable (), vous utilisez directement l'ID de la ressource comme 

Resources res = getResources();
String mDrawableName = "myimageName"; //use your image name like if your    image name is myimagename.png then use my imagename
int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName());
imgView.setImageResource(resID);`
17
Jibran

Vous pouvez créer une fonction commune pour obtenir une image dessinable comme ceci:

public static Drawable getDrawable(Context mContext, String name) {
        int resourceId = mContext.getResources().getIdentifier(name, "drawable", mContext.getPackageName());
        return mContext.getResources().getDrawable(resourceId);
    }
0
Vishal Bhadani
ImageView img = (ImageView) findViewById(R.id.{ImageView id});
img.setImageResource(getResources().getIdentifier("ImageName","drawable",getPackageName()));
0
mohamed elshazly