Java 如何随机化图像阵列

Java 如何随机化图像阵列,java,android,arrays,Java,Android,Arrays,我有一个图像数组,在我从中选择一个带有id号的图像之前,我想知道我是否可以随机选择它们,这样每次运行应用程序时,同一图像都可以有不同的id号 我的图像阵列: <array name="PairImages"> <item>@drawable/a</item> <item>@drawable/b</item> <item>@drawable/c</item> <item>

我有一个图像数组,在我从中选择一个带有id号的图像之前,我想知道我是否可以随机选择它们,这样每次运行应用程序时,同一图像都可以有不同的id号

我的图像阵列:

<array name="PairImages">
    <item>@drawable/a</item>
    <item>@drawable/b</item>
    <item>@drawable/c</item>
    <item>@drawable/d</item>
    <item>@drawable/e</item>
    <item>@drawable/f</item>
    <item>@drawable/g</item>
    <item>@drawable/h</item>
    <item>@drawable/i</item>
    <item>@drawable/j</item>
</array>

您已经完成了几乎所有的工作,您只需要一个数组或列表来保存id值,然后将它们随机化。看一看

您的代码最终将类似于:

//...

final TypedArray ImageArray = getResources().obtainTypedArray(R.array.PairImages);

//Just a holder for random numbers. 
//If you add/remove an image make sure you change the 8...
ArrayList<Integer> randomNumbers = new ArrayList<>();
for (int i = 0; i < 8; i++){
    randomNumbers.add(i);
}
Collections.shuffle(randomNumbers);
int i = 0;


FirstImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
SecondImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
ThirdImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
FourthImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
FifthImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
SixthImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
SeventhImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
EightImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));

//...
/。。。
最终类型Darray ImageArray=getResources().obtainTypedArray(R.array.PairImages);
//只是一个随机数的持有者。
//如果添加/删除图像,请确保更改8。。。
ArrayList randomNumbers=新的ArrayList();
对于(int i=0;i<8;i++){
随机数字。添加(i);
}
集合。洗牌(随机数);
int i=0;
setImageResource(ImageArray.getResourceId(randomNumbers.get(i++),-1));
setImageResource(ImageArray.getResourceId(randomNumbers.get(i++),-1));
setImageResource(ImageArray.getResourceId(randomNumbers.get(i++),-1));
setImageResource(ImageArray.getResourceId(randomNumbers.get(i++),-1));
setImageResource(ImageArray.getResourceId(randomNumbers.get(i++),-1));
setImageResource(ImageArray.getResourceId(randomNumbers.get(i++),-1));
setImageResource(ImageArray.getResourceId(randomNumbers.get(i++),-1));
setImageResource(ImageArray.getResourceId(randomNumbers.get(i++),-1));
//...

您也可以尝试立即用随机数构建数组,但我认为目前洗牌还可以。

重复的,您可以用文本框和数组(比如数字作为项目)来进行同样的操作吗?
//...

final TypedArray ImageArray = getResources().obtainTypedArray(R.array.PairImages);

//Just a holder for random numbers. 
//If you add/remove an image make sure you change the 8...
ArrayList<Integer> randomNumbers = new ArrayList<>();
for (int i = 0; i < 8; i++){
    randomNumbers.add(i);
}
Collections.shuffle(randomNumbers);
int i = 0;


FirstImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
SecondImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
ThirdImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
FourthImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
FifthImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
SixthImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
SeventhImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));
EightImageCard.setImageResource(ImageArray.getResourceId(randomNumbers.get(i++), -1));

//...