我正在尝试为我正在开发的测验程序寻求解决方案。 1.一个问题集合下的10个文档中有10个问题。 2.这些问题中的每一个都有1个正确答案和5个错误选项。
这是我到目前为止所做的: 1.我在线性布局中有一个ListView(除了Textviews之外,它还显示问题和选项:
<ListView
android:id="@+id/queslist"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:visibility="invisible">
</ListView>
在Java代码中,我有一个适配器,该适配器中装有这样的Questions Collection中的所有文档。
ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, questions);
quesList.setAdapter(adapter);
chapterRef.document(chapterBase)
.collection(levelBase)
.document("Summary")
.collection("QUESTIONS")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for(QueryDocumentSnapshot documentSnapshot : task.getResult()){
quesFull = documentSnapshot.getString("ques");
questions.add(quesFull);
Toast("questions "+questions);
}
adapter.notifyDataSetChanged();
}
});
到目前为止,一切都很好。现在我想实现这一目标:
当用户选择测验时, 1.所有10个问题都进行了混排,因此对于另一个用户,它们的顺序永远不会相同。 2.其次,我希望从5个错误选项中随机选择3个错误选项。 这使选项总共为4(包括正确答案)。 3.最后,我希望再次调整这4个选项,以便每次尝试的顺序都不同。
有人可以帮我吗?
先谢谢了。
答案 0 :(得分:0)
对于那些正在寻找类似问题答案的人来说,这是解决该问题的方法。 但是,如果有人有更好的解决方案,请在此处共享。
我首先创建了一个列表字符串=问题,然后将数字添加到其中。当然,这可以进一步改进。
然后,我将方法称为QuestionShuffle。
private void QuestionShuffle() {
questions.add("1");
questions.add("2");
questions.add("3");
questions.add("4");
questions.add("5");
questions.add("6");
questions.add("7");
questions.add("8");
questions.add("9");
questions.add("10");
Collections.shuffle(questions);
}
然后,使用.get(index),我得到了问题的顺序。
String docnumber = questions.get(counter);
为了重新整理选项,使用了以下代码。
private void OptionShuffle(){
Random random = new Random();
List<String> givenList = Lists.newArrayList("0", "1", "2", "3", "4");
int numOfopts = 3;
options.clear();
for(int i = 0; i < numOfopts; i++){
int randomIndex = random.nextInt(givenList.size());
String selection = givenList.get(randomIndex);
options.add(optList.get(Integer.parseInt(selection)));
givenList.remove(randomIndex);
}
optionA.setText(ansFull);
options.add(ansFull);
Collections.shuffle(options);
optionA.setText(options.get(0));
optionB.setText(options.get(1));
optionC.setText(options.get(2));
optionD.setText(options.get(3));
}