嘿我正在尝试计算用户正确回答问题的次数。这就是我的数据库存储方式
userid-> questionsid1-> correectlyanswer" 1"
userid-> questionsid2-> correectlyanswer" 0"
userid-> questionsid3-> correectlyanswer" 0"
userid-> questionsid4-> correectlyanswer" 1"
1表示答案正确,0表示不正确。
这是代码。问号的值是正确的,但checkCorrectAnswer字符串中的值始终为空。
databaseReference1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int questionsolved = 0;
for (DataSnapshot userAnswerSnapshot : dataSnapshot.getChildren()) {
String questionCodeKey = userAnswerSnapshot.getKey();
String checkCorrectAnswer = userAnswerSnapshot.child(questionCodeKey).child("checkAnswerCorrect").getValue(String.class);
if (checkCorrectAnswer.equals("1")) {
questionsolved = questionsolved + 1;
}
}
questionSolvedTextview.setText(questionsolved + "");
};
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 0 :(得分:1)
我认为你错了。
String checkCorrectAnswer = userAnswerSnapshot.child(questionCodeKey).child("checkAnswerCorrect").getValue(String.class);
我认为您不需要为此获取questionCodeKey,因为您已经在遍历DatabaseReference的子级,我相信这是特定用户的路径。如果是这种情况,那么您正在遍历已经存在的问题,这意味着您不必提出问题,因为您已经在其中。有了它,试试这个,让我知道它是否有效:
String checkCorrectAnswer = userAnswerSnapshot.child("checkAnswerCorrect").getValue(String.class);