java - Android Studio Java - 如何使用随机数组而不重复?
问题描述
我有一系列随机消息,但我希望它不会选择已经被选中的消息,然后在所有消息都被选中后重置。
public void showRandomMsg(){
shuffleMsg();
answer1.setText((messageArray[0].getmAns()));
message2.setText((messageArray[0].getmMsg()));
toyView1.setImageResource(messageArray[0].getmImage());
}
Messages m01 = new Messages(R.drawable.crown1, "Mesage 0 A","Message 0 B");
Messages m02 = new Messages(R.drawable.crown2,"Mesage 1 A","Message 1 B");
Messages m03 = new Messages(R.drawable.crown3,"Mesage 2 A","Message 2 B");
Messages m04 = new Messages(R.drawable.crown4,"Mesage 3 A","Message 3 B");
Messages m05 = new Messages(R.drawable.crown5,"Mesage 4 A","Message 4 B");
Messages [] messageArray=new Messages[]{
m01, m02, m03, m04, m05
};
public void shuffleMsg(){
Collections.shuffle(Arrays.asList(messageArray));
}
解决方案
您可以为删除一条消息的消息获取器编写逻辑,如果没有消息可用,则重新填充:
List<Messages> messageList;
public void showRandomMsg(){
if (Objects.isNull(messageList) || messageList.size() == 0) {
refillMsg();
}
answer1.setText(messageList.remove(0).getmAns());
message2.setText(messageList.remove(0).getmMsg());
toyView1.setImageResource(messageList.remove(0).getmImage());
}
public void refillMsg() {
messageList = Arrays.asList(new Messages[] {
m01, m02, m03, m04, m05
});
Collections.shuffle(messageList);
}
推荐阅读
- java - 无法将元素添加到 ArrayList
- xml - 如何在xsd文件中元素标签的name属性值中添加前缀字符串
- c++ - 具有外部说明符的全局变量的循环依赖
- sql - 使用嵌套连接进行访问的完全外部连接
- python - re.search 不提供多个组的输出
- c - Obj-C 有@available。斯威夫特有#available。我可以在 C/C++ 中使用什么?
- java - 抛出 NullPointerException,但对象已创建并正确返回值
- r - 当 R 中的值相似时,如何给直方图更多的变化?
- functional-programming - string-append 似乎将字符串标识为列表
- python - 从 API 中提取时出现 JSON 解码错误?