アクティビティに16のimageviewsがあります......img1->img16という名前です。各画像ビューに差分画像が必要ですが、これをハードコーディングすることはできません。たとえば、1、2、3 ....など、追加で渡される番号に応じて、これらのビューに追加される画像は異なる必要があります。
私は現在16枚の画像を追加するコードを持っていますが、これらは一意ではありません.....それらは複製されています...
int[] imageViews = {
R.id.img1, R.id.img2,
R.id.img3, R.id.img4,
R.id.img5, R.id.img6,
R.id.img7, R.id.img8,
R.id.img9, R.id.img10,
R.id.img11, R.id.img12,
R.id.img13, R.id.img14,
R.id.img15, R.id.img16
};
int[] images = {
R.drawable.img1, R.drawable.img2,
R.drawable.img3, R.drawable.img4,
R.drawable.img5, R.drawable.img6,
R.drawable.img7, R.drawable.img8,
R.drawable.img9, R.drawable.img10,
R.drawable.img11, R.drawable.img12,
R.drawable.img13, R.drawable.img14,
R.drawable.img15, R.drawable.img16
};
Random random = new Random(System.currentTimeMillis());
for(int v : imageViews)
{
ImageView iv = (ImageView)findViewById(v);
iv.setImageResource(images[random.nextInt(images.length - 1)]);
}
また、可能であれば、渡された番号によって画像が異なるため、画像が画像配列にハードコーディングされないようにする必要があります。
したがって、これらの画像は1番のものですが、2番がアクティビティに渡された場合、画像は異なります。
すべての詳細はローカルデータベースに保存され、画像はすべてドローアブルフォルダにあり、すべて同じ命名スタイルに従います。たとえば、img1からimg100...までです。
よろしくお願いします。
/更新/
こんにちは、私は次のコードでそれを試しました:
Random random = new Random(System.currentTimeMillis());
List<Integer> generated = new ArrayList<Integer>();
for(int v : imageViews)
{
int next = random.nextInt(15) + 1;
if (!generated.contains(next))
{
generated.add(next);
ImageView iv = (ImageView)findViewById(v);
iv.setImageResource(images[next]);
}
}
私はそこで完全に間違っているかもしれません....しかし、これまでのところ、重複は見つかりませんでしたが、ギャップを助けません。16のランダムなintを生成するかのように、一意のintを追加するだけです。あなたが理解しているなら、16のユニークな画像に達するまで生成するのではなく?
その面で何かアイデアはありますか?