我的测验应用程序出了问题。我必须填写我的问题列表(取自Firebase数据库),但我的代码似乎是错误的。
File Start.java:
private void loadQuestion(String categoryId) {
//First, clear list if have old question
if(Common.questionList.size() > 0)
Common.questionList.clear();
questions.orderByChild("CategoryId").equalTo(categoryId)
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot postSnapshot : dataSnapshot.getChildren())
{
Question ques = postSnapshot.getValue(Question.class);
Common.questionList.add(ques);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//Random list
Collections.shuffle(Common.questionList);
}
和文件Common.java:
public class Common {
public static String categoryId;
public static User currentUser;
public static List<Question> questionList = new ArrayList<>();
}
谢谢大家。
答案 0 :(得分:2)
您的数据是通过回调addValueEventListener
在功能开始时,清除列表:
Common.questionList.clear();
所以Collections.suffle
只会在您的空列表中随机播放
你想要的是将shuffle功能放在你的回调中:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot postSnapshot : dataSnapshot.getChildren())
{
Question ques = postSnapshot.getValue(Question.class);
Common.questionList.add(ques);
}
// Shuffle it
Collections.shuffle(Common.questionList);
}