2012-04-18 6 views
2
int i = 1; 
String IMG = "pic"; 
IMG = IMG + Integer.toString(i); 
i = i + 1; 

imageview1.setImageResource(R.drawable.IMG); 

R.drawable.IMGここで、IMGは変数です。setImageResource

これは間違っています。何が正しいでしょうか?イメージビューをpic1からpicNに変更したい。


INT []イメージ=新しいINT [] {R.drawable.pic1、R.drawable.pic2、R.drawable.pic3}。

これは優れていますが、ベクター要素をイメージビューに挿入するにはどうすればよいですか? 私の悪い英語のレベルのため申し訳ありません:)

答えて

0

あなたのアプリのリソースを識別する識別子は一連の連続した番号ではありません。追加した画像の配列を作成します。

int[] images = new int[]{R.drawable.pic1, R.drawable.pic2, R.drawable.pic3}; 

その代わりにインデックスを増やしますか?

+0

imageview1.setImageResource(images [i]); ???? –

4

これはこれはかなり遅いであることが証明され

int resourceId = getResources().getIdentifier("pic" + i, "drawable", getPackageName()); 

imageview1.setImageResource(resourceId); 

を使用することによって達成することができます。より良いオプションは

int[] drawables = new int[] { R.drawable.pic1, R.drawable.pic2 }; 
+0

イメージビューにベクターの要素を挿入するにはどうすればいいですか? –

+0

imageview1.setImageResource(drawable [i]); – dymmeh

0

...それを通して、あなたの描画可能なIDとループの配列を維持するためにあなたがJavaのリフレクションでもこれを行うことができます@dymmeh によって与えられた解決策のようになりますが、私はそれができる疑いを持っています遅くなる。

int resId = R.drawable.getClass().getField("pic" + i).getInt(R.drawable); 
関連する問題