it-swarm.com.de

Wie setze ich ein imageView Bild aus einem String?

Ich habe eine Liste von Einträgen und einige Bitmap-Dateien im Verzeichnis res/drawable-mdpi. Ich versuche, das Bild zu laden, das dem aus der Liste ausgewählten Zeichenfolgenwert entspricht, indem eine Pfadzeichenfolge generiert und die Bitmap-Factory verwendet wird. Das Problem ist, ich glaube nicht, dass mein Pfad richtig ist, da die Bitmap selbst für das Standardbild immer null ist.

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

Wird das Verzeichnis res noch auf das Gerät kopiert? Was ist der richtige Weg, den ich verwenden sollte, oder sollte ich anders vorgehen?

Vielen Dank

31
Matt

wenn Sie das Bild im Zeichnungsordner haben, gehen Sie dies falsch herum vor.

versuche so etwas

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

Keine Notwendigkeit, getDrawable () zu verwenden, verwenden Sie die Ressourcennummer direkt 

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

Sie können eine allgemeine Funktion erstellen, um das Bild so zeichnen zu können:

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