我有 16 个关于活动的图像视图......名为 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 个随机整数,但只会添加唯一的整数,如果你明白的话,而不是生成直到达到 16 个独特的图像?
在这方面有什么想法吗?