2011-01-13 5 views
1

私は画像リソースimg1,img2,...img10を持っていますが、それらを以下のコードで動的に参照する方法はありますか?私が何をしたいかJavaのリソース 'R.raw.img' + rにアクセスするには?

for (int r=1; r<=10; r++){ 
     TableRow tr = new TableRow(this); 
     ImageView im = new ImageView (this); 
     im.setImageDrawable(getResources().getDrawable(R.raw.img1)); 
    ... 

+3

あなたのタイトルは理解できないほど一般的です。 – jball

+0

もっとわかりやすいタイトルを使用してください。 – pwc

+0

xmlファイルの関連するセクションを投稿することができれば助かります。 – John

答えて

0

はこれを試してみてください... 'R.raw.img' + rへの参照を取得することです:

Bitmap _scratch = BitmapFactory.decodeResource(getResources(), R.drawable.img1); 

あなたはビットマップとBitmapFactoryをインポートする必要があります。 _scratchは、リソースへの作業ハンドルですR.drawable.img1

+0

私はそれを解読したくない... – java

+0

@ジャワ:それではどうすればいいの?画面に描画する場合、 '_scratch'は私の例です。これは作業ハンドルです。 – John

+0

@ジャバ:あなたが使っているものは、少なくともそれを試して、それが動作するかどうかを確認してください。 – John

3

これはあなたが言ったように単に可能ではありません。
解決策は次のとおりです。
リソースには型付き配列が必要です。説明はthis site from Googleのようにしてください。要するに
、このようなあなたのリソースファイルを作成し、

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <array name="pictures"> 
     <item>@drawable/img1</item> 
     <item>@drawable/img2</item> 
     <item>@drawable/img3</item> 
    </array> 
</resources> 

コードこの方法、

Resources res = getResources(); 
TypedArray pics = res.obtainTypedArray(R.array.pictures); 
あなたは、このような配列を反復処理することができ

for (i.....) 
    Drawable drawable = pics.getDrawable(i); 
+1

リンクの腐敗が問題なので、とにかく説明していただければ幸いです。私たちはこの答えが次の人にとって役に立たないようにしたくありません。 – John

+1

ありがとうございます。あなたが提案したように修正しました。しかし、このリンクが腐敗する可能性があると私は疑う。 – Haozhun

+0

はい、Googleが腐敗する可能性があると噂されています。 ;)次にあなたが誰かに返答したとき、最初に@ [NAME]を追加することをお勧めします。ここで[NAME]は人名です(明らかに)。そうすれば、あなたの応答をシステムが通知します。あなたが私がコメントしている答えを所有しているので、あなたは "@Gene"を追加しなくても、この応答を通知されています。 – John

1

は、おそらく最も簡単ですする:

int[] images = new int[]{ 
    R.raw.img1, R.raw.img2 .... 
}; 
for (int r=1; r<=10; r++){ 
    TableRow tr = new TableRow(this); 
    ImageView im = new ImageView (this); 
    im.setImageDrawable(getResources().getDrawable(images[i])); 
... 

アレイを取り除きたい場合は、反射が必要です

+0

これは彼にリソースへの参照/ハンドルを与える方法は? – John

関連する問題