我正在尝试在毕加索中生成随机字符串数组url,一切正常,但会重复,就像我启动应用程序时有28个字符串数组项,某些项正在重复,但是随机启动时我一次只希望有1个项
这是我的代码
ImageView imageView = itemView.findViewById(R.id.imageview);
random = new Random();
int p= random.nextInt(icons.length);
Picasso.get().load(icons[p]).into(imageView);
答案 0 :(得分:0)
尝试以下
ImageView imageView = itemView.findViewById(R.id.imageview);
Random random = new Random();
List<Integer> cache = new ArrayList<>();
int p = 0;
do {
p = random.nextInt(icons.length);
} while(cache.contains(p));
cache.add(p);
Picasso.get().load(icons[p]).into(imageView);
答案 1 :(得分:0)
您可以跟踪数组/列表中先前生成的整数,并在每次生成新的随机数时检查数组。这样,如果生成的新整数已存在于数组中,则将生成一个新的整数,直到生成28个数字为止,之后必须清除数组并重新开始。
ImageView imageView = itemView.findViewById(R.id.imageview);
Random random = new Random();
List<Integer> prevInts = new ArrayList<>();
Picasso.get().load(icons[randomUniqueInteger()]).into(imageView);
public int randomUniqueInteger(){
int p = 0;
do {
p = random.nextInt(icons.length);
} while(prevInts.contains(p));
if ((prevInts.size + 1) == icons.length){
prevInts.clear();
}
prevInts.add(p);
return p;
}