我正在尝试使用数组制作随机测验应用,所以我想保持重复。你能提出一些我能做到的方法吗?我已经为我所拥有的内容添加了以下代码。我不确定我需要做什么。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.quiz);
QuestionMaker();
}
这个函数会提出一系列问题:
//funtion makes the load of the question
public void QuestionMaker(){
QText=(TextView) findViewById(R.id.textView_questions);
Qgroup=(RadioGroup)findViewById(R.id.Group_radio);
btnNext=(Button)findViewById(R.id.button_next);
final ArrayList<String> distractorList = new ArrayList<String>();
Collections.addAll(distractorList, Options);
//first time of filling the form
int length = question.length;
for (int i = 0; i < length; i++)
quiz.add(new QuestionAndAnswer(question[i], answer[i], distractorList.subList(i * 3, (i + 1) * 3)));
Collections.shuffle(quiz);
fillInQuestion();
//clicking the radio button this happen
Qgroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
makefinish++;
QuestionAndAnswer qna = quiz.get(currentQuestion);
qna.selectedAnswer = ((RadioButton) group.findViewById(checkedId)).getText().toString();
if (qna.selectedAnswer == qna.answer) {
correctcounter++;
//correct message
}
if (!(qna.selectedAnswer == qna.answer)) {
//wrong answer message
}
}
//function that makes the filling
public void fillInQuestion() {
QuestionAndAnswer qna = quiz.get(currentQuestion);`enter code here`
QText.setText(qna.question);
int count = Qgroup.getChildCount();
for (int i = 0; i < count; i++)
((RadioButton) Qgroup.getChildAt(i)).setText(qna.allAnswers.get(i));
}
答案 0 :(得分:1)
有几种方法可以做到这一点。这是一个:
您可以通过随机生成0到数组中元素数之间的数字来随机选择一个问题。之后,您可以在屏幕上显示该问题。用户回答问题后,您要刷新屏幕并加载其他问题。此外,您应该创建另一个数组,该数组将包含已生成的数字列表,并检查问题编号以确保您之前没有问过该问题。
回答有关重复的问题:在用户输入第一个问题的答案后,更改文本并回答选择。这个逻辑也可以循环或某种形式。