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
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 );
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);`
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);
}
ImageView img = (ImageView) findViewById(R.id.{ImageView id});
img.setImageResource(getResources().getIdentifier("ImageName","drawable",getPackageName()));