現在、私は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;
ただし、これはあまり効率的ではありません。
ありがとう
これを行う方法があります。Resources.getIdentifier()を使用して文字列でリソースIDを取得できます http://developer.Android.com/reference/Android/content/res/Resources.html
何かのようなもの:
int resourceId = Activity.getResources().getIdentifier("testimage", "drawable", "your.package.name");
私が使用しているもの:
int resId = getResources().getIdentifier("testimage", "drawable", getPackageName());
image.setImageResource(resId);
「testimage」-たとえばtestimage.jpgに対応します。つまり、「。jpg」を含めないでください。
「drawable」-次のようなリソースタイプです:@ drawable/testimage
画像をassets /フォルダーに入れて開きます
image.setImageURI("file:///Android_asset/" + nameFromDB);