如何在下面的两个公共类中使用相同的randomNumber,因为您可以看到它们都有一个随机数生成器。我需要为两者使用相同的随机数。
目前他们都工作,但文字与图片不匹配,因为他们得到不同的随机数
有什么想法吗?
public String getItem() {
// Set vars
String item = "";
Random randomGen = new Random();
int randomNumber = randomGen.nextInt(mitems.length);
item = mitems[randomNumber];
return item;
}
public int getImg() {
// Set vars
int pic;
Random randomGen = new Random();
int randomNumber = randomGen.nextInt(mitems.length);
pic = mPics[randomNumber];
return pic;
}
这是他们被访问的方式......
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String item = mItemBook.getItem();
int pic = mItemBook.getImg();
// Update text view with item
mInfoText.setText(item);
mImage.setImageResource(pic);
}
答案 0 :(得分:1)
简单。不要生成两次随机数。只需生成一次并将其传递给String getGuid()
和void setGuid(String arg1)
,添加帮助方法即可知道有多少项:
getImg
你的onClick现在可以获得项目数量,并随机选择一个:
getItem
就此而言,不要继续构建public int numItems() { return mitems.length; }
public String getItem(int id) {
return mitems[id];
}
public int getImg(int id) {
return pic = mPics[id];
}
实例。构造一个,并将其保存在一个字段中。这是更好的做法,因为在可以重复使用时不必要地构造对象可能在许多情况下导致性能或内存问题。虽然在onClick方法中可能并非如此,但现在最好养成良好的习惯而不是以后。