2012-11-12 5 views
26

を描画可能を探す可能性の重複:タイトルのすべて申し訳ありませんの
Android - Open resource from @drawable String文字列で

まず私は、私が設定することができます正確に何タイトルか分かりません。 'picture0001':

私は外部のデータベースから例えば文字列をrecibeます:

[OK]を、ここに私の質問です。

res/drawableフォルダにはpicture0001という名前の画像があります。

私はその画像をImageViewの背景(ソース)として設定したいと思います。

質問は、私は外部データベースから得た文字列でこの画像をどのように見ることができるのですか?

ありがとうございました。

答えて

113

はい、Resources.getIdentifier()を使用して名前で検索できます。

Context context = imageView.getContext(); 
int id = context.getResources().getIdentifier("picture0001", "drawable", context.getPackageName()); 
imageView.setImageResource(id); 

これは効率的ではありませんが、ときどきリソースを検索します。

+0

@QuinDa Great !それがあなたのために働くならば、答えの横にあるチェックマークをクリックすることを忘れないでください - それはあなたが私たちから将来的により良い答えを得るのを助けるでしょう! ;) – Eric

+0

私はそれを試しましたが、投票には15の評判が必要です): – QuinDa

+0

@QuinDa上向きの矢印ではないチェックマークです(これは、評判が15です)。しかし、それはあなたがすでにそれを見つけたようです! :) – Eric

4

ます。また、このようにリフレクションを使用することができます。

Class c = Class.forName("your.project.package.R"); 
Field f = c.getDeclaredField("drawable"); 
Class d = f.getDeclaringClass(); 
Field f2 = d.getDeclaredField("yourstring"); 
int resId = f2.getInt(null); 
Drawable d = getResources().getDrawable(resId); 

けれども、最善の解決策は、MarvinLabsが提案するものです。

+3

'Resources.getIdentifier'はおそらくこれより簡単な方法だと思います。 – Tim

+0

それは素晴らしいです!私はこの方法を知らなかった。ありがとう! –

+0

はい、この解決策は速いです(40%以上) –