web-dev-qa-db-ja.com

設定Android文字列値からの画像

現在、私はAndroidアプリケーションで次のようにPNG画像を描画しています:

ImageView image = new ImageView(context);
image.setImageDrawable(context.getResources().getDrawable(R.drawable.testimage))

データベースに画像名のリストがある場合、画像名を使用して上記のドローアブルを設定する方法はありますか?私はすでにデータベースを通過するためのコードを持っています、私はここから取られた値に基づいて画像を描くことを探しています。

たとえば、DBのレコード:

ID:    Name:    ImageName:
-      Test     testimage

したがって、このレコードを読んでいるとき、「testimage」の値を持つ文字列があり、描画可能な画像をR.drawable.testimageに設定したいと思います。

私がそれをすることを考えていた1つの方法は次のようなものになるでしょう:

int image = R.drawable.blank; // blank image

// testimage.png is the image name from the database
if(imageName.toString().equals("testimage.png"))
    image = R.drawable.testimage;
else if(imageName.toString().equals("another.png"))
    image = R.drawable.another;
else if(imageName.toString().equals("etc.png"))
    image = R.drawable.etc;

ただし、これはあまり効率的ではありません。

ありがとう

18
ingh.am

これを行う方法があります。Resources.getIdentifier()を使用して文字列でリソースIDを取得できます http://developer.Android.com/reference/Android/content/res/Resources.html

何かのようなもの:

int resourceId = Activity.getResources().getIdentifier("testimage", "drawable", "your.package.name");
27
GeekYouUp

私が使用しているもの:

int resId = getResources().getIdentifier("testimage", "drawable", getPackageName());
image.setImageResource(resId);

「testimage」-たとえばtestimage.jpgに対応します。つまり、「。jpg」を含めないでください。

「drawable」-次のようなリソースタイプです:@ drawable/testimage

チェック Resources.getIdentifier(...)

22
Erik S

画像をassets /フォルダーに入れて開きます

image.setImageURI("file:///Android_asset/" + nameFromDB);
0
Mikpa