生きる気力を失っているのかもしれません。ImageAdapter を使用する Gridview で画像をシャッフルする方法を作成しようとしています。私はAndroidの経験がありません。このサイトで、繰り返しのない配列のシャッフルに関するすべての質問にアクセスしました。通常の Java 環境でテストしました。繰り返しなしで動作するものがあります。配列を Arraylist に変更して Collections.shuffle を使用してみました。まだ繰り返しが発生するか、エミュレーターがクラッシュしました。これについての洞察を本当に感謝します-おそらく単純なものですが、私はそれを得ることができません。ここに私の方法のいくつかがあります(私が見つけたコードを使用しています)。
public Integer[] myShuffleS(Integer []ji){
ArrayList<Integer> numbers = new ArrayList<Integer>();
Random randomGenerator = new Random();
while (numbers.size() < 36) {
int random = randomGenerator.nextInt(35);
if (!numbers.contains(random)) {
numbers.add(random);
}
}
for (int i=0; i<ji.length;i++) {
ji[i] =ji[numbers.get(i)] ;
// i++;
}
return ji;
}
別
static int[] shuffleArray(int[] ar)
{
Random rnd = new Random();
int randomNo = rnd.nextInt()*3;
// int randomNo = (int)Math.floor(Math.random() * 3);
for (int i = ar.length - 1; i >= 0; i--)
{
// int index = rnd.nextInt(i + 1);
int index = randomNo - 1;
// Simple swap
int a = ar[index];
ar[index] = ar[i];
ar[i] = a;
}
return ar;
}
public static void shuffleAArray(int[] a) {
int n = a.length;
int random = randomInt(0,35);
// random.nextInt();
for (int i = 0; i < n; i++) {
int change = i + random;
swap(a, i, change);
}
}
別
public Integer[] myShuffle( Integer[]jigX){
boolean found = false;
for (int i = 0; i < jigX.length; i++) {
do {
found = false;
int temp = randomInt(0,35);
jigX[i] = temp;
for (int j = 0; j < i && !found; j++) {
if (jigX[j] == temp)
found = true;
}
}
while (found);
}
return jigX;
}
Collections.shuffle も試して、次のピースに入れて画像を取得しました
myShuffleS(jigX);//or whatever method
imageView.setImageResource(jigX [position]);
誰かがこれを助けることができれば、それは素晴らしいことです! ありがとう