2016-05-17 8 views
1

私はリソースとしてイメージを持ち、ファイル名はimage1、image2、...というようになります。これらの画像をカルーセルで使用したいと思います。カルーセルで同じ画像を生成することはできますが、リソースの名前はループごとに変更する必要があります。ここでforループのラウンドごとに異なる画像

は、コードは次のとおりです。

for (int i = 0; i < 4; i++) { 
     ImageView imageView = new ImageView(this); 
     imageView.setId(i); 
     imageView.setPadding(2, 2, 2, 2); 
     imageView.setLayoutParams(layoutParams); 
     imageView.setImageBitmap(BitmapFactory.decodeResource(
       getResources(), R.drawable.image_01)); 
     imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
     mainHorizLinLayout.addView(imageView); 
    } 

代わりimage_01のだから私はimage_ + Iを使用したいと思います。私は文字列を作成してそれをR.drawable.image_01で使用しようとしましたが、動作しませんでした。

アイデア、タンク?

+1

'R.drawable.image_01'は、IDの代わりです。あなたができることは、すべてのイメージIDを集めて配列に投げることです。 –

+0

R.drawable.image_01 == 1111とし、R.drawable.image_02が1112であることを保証していますか? –

答えて

2

R.drawable.image_01は文字列ではありません(ALT + Rクラスをクリックしてください)。あなたが行うことができますので、しかし、これらのint型は順序である:私の前に提案

imageView.setImageBitmap(BitmapFactory.decodeResource(
      getResources(), R.drawable.image_01 + i)); 
2

この方法を試してみてください

int[] images = {R.drawable.image_01, R.drawable.image_02, R.drawable.image_03, R.drawable.image_04, R.drawable.image_05}; 

for (int i = 0; i < images.length; i++) { 
    ImageView imageView = new ImageView(this); 
    imageView.setId(i); 
    imageView.setPadding(2, 2, 2, 2); 
    imageView.setLayoutParams(layoutParams); 
    imageView.setImageBitmap(BitmapFactory.decodeResource(
       getResources(), images[i])); 
    imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
    mainHorizLinLayout.addView(imageView); 
} 
2

一つの方法は、画像リソースIDの配列を持つことです。

もう一つの方法は、このように所望の画像のリソースIDを取得することです:

int drawableResourceId = this.getResources().getIdentifier("image_" + i, "drawable", this.getPackageName()); 
関連する問題