我有一個活動......名爲img1-> img16的16個圖像。我想要在每個圖像視圖上顯示一個diff圖像,並且這個圖像不能被硬編碼,這取決於傳送的數字是多少,例如, 1,2,3 .....添加到這些視圖的圖像必須不同。爲圖像添加隨機和獨特的圖像android
我現在有代碼,增加了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 ....
非常感謝提前。
/UPDATE/
嗨,我試圖與下面的代碼:
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個隨機整數,但只增加了獨特的,而不是生成,直到達到16個獨特的圖像,如果你明白了嗎?
在這方面的任何想法?
所以你遇到的唯一問題是當前的方法允許重複? –
是的,有時當你訪問活動,一些圖像丟失,imageview仍然存在,但可能有一個圖像應該是 –