我正在制作一个测验应用程序,其中的问题和答案取自firebase . 我已经在firebase中上传了其选项的问题,现在想要随机检索它们,但由于我是编程的初学者,所以不知道该怎么做 . 这是我的firebase数据的屏幕截图
https://drive.google.com/file/d/1T7-x3TP1TaA8_ntwfoRNdb2oMGV_swl6/view?usp=sharing
private void updateQuestion(){
mQuestionRef = new Firebase("https://testapp-465fe.firebaseio.com/"+ mQuestionNumber + "/question");
mQuestionRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String question = dataSnapshot.getValue(String.class);
mQuestionView.setText(question);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
mChoiceRef1 = new Firebase("https://testapp-465fe.firebaseio.com/"+ mQuestionNumber + "/choice1");
mChoiceRef1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice1 = dataSnapshot.getValue(String.class);
mButtonChoice1.setText(choice1);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
mChoiceRef2 = new Firebase("https://testapp-465fe.firebaseio.com/"+ mQuestionNumber + "/choice2");
mChoiceRef2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice2 = dataSnapshot.getValue(String.class);
mButtonChoice2.setText(choice2);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
mChoiceRef3 = new Firebase("https://testapp-465fe.firebaseio.com/"+ mQuestionNumber + "/choice3");
mChoiceRef3.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice3 = dataSnapshot.getValue(String.class);
mButtonChoice3.setText(choice3);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
mChoiceRef4 = new Firebase("https://testapp-465fe.firebaseio.com/"+ mQuestionNumber + "/choice4");
mChoiceRef4.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice4 = dataSnapshot.getValue(String.class);
mButtonChoice4.setText(choice4);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
mAnswerRef = new Firebase("https://testapp-465fe.firebaseio.com/"+ mQuestionNumber + "/answer");
mAnswerRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mAnswer = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
mQuestionNumber++;
}
这是我的代码,从firebase顺序加载问题!我google了很多但没有得到如何生成随机节点并获取该随机节点的子值!
2 回答
我一直在想如何做到这一点,我来到这里
首先,您需要从
Database
获取所有数据,为此,请执行以下操作我将留下关于如何从ArrayList获取内容的片段
其中
list
将是你的ArrayList
questionList希望这可以帮助
快乐的编码!
作为一个初学者,产生随机数可能是一个小混乱 . 所以一个简单的方法是在 millisecond 中获取 current time ,使其看起来像
11023049
(hour-min-sec-ms)由于每次生成时它都是唯一的,因此您需要一个函数来确定基于此唯一值检索的问题顺序 .
要特定于您的问题,您可以在 millisecond 中获取时间,因为它是变化最快的变量并检索其数量等于毫秒的问题 . 或者有一些变化, odd millisecond values would fetch questions in reverse order, and even values would fetch in normal order .
UPDATE 1 :创建订单的一种简单方法是(这只会使起始问题随机化,下一个问题将按顺序排列,因此强烈建议使用其他方法):
UPDATE 2: 更好的方法(推荐)
两个方法的返回对象是ArrayList . 在Activity的
onCreate()
存根中,您应该运行此函数并创建一个ArrayList . 就像是:一旦创建了
ArrayList
order
,您就可以串行遍历ArrayList
并获取问题编号并使用它来从Firebase Database
(来自ValueEventListener)获取问题 .