gpt4 book ai didi

java - 比较不同的引用 (Firebase)

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:29 25 4
gpt4 key购买 nike

我正在尝试开发一个问答应用程序。 Firebase 数据库如下所示:

-users
-userId
-answers
-questionId : answer
-questionId : answer

-questions
-questionId
-questionId
-questionId
-questionId

如果用户回答了问题,则该问题将根据 userId 存储在答案部分下。我的问题是找到用户未回答的问题并将其显示在 Activity 中。为此,我首先从 questions 列表中选择一个问题,然后检查它是否存在于 answers 列表中。方法是这样的:

public void showUnansweredQuestion()
{
questionsRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot question: dataSnapshot.getChildren())
{
final String questionId = question.getKey().toString();

usersRef.child(user.getUid())
.child("answers")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!dataSnapshot.hasChild(questionId))
{
updateUI(questionId);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {}
});
}
}

@Override
public void onCancelled(DatabaseError databaseError) {}
});
}

但是,这种方法总是显示最后一个未回答的问题,而我想查看第一个问题。问题可能是 for 循环,我无法在 if 中编写 break 或由于内部类而无法定义标志。您有什么建议吗?

最佳答案

一种选择可能是在 showUnansweredQuestion() 方法的开头创建一个空的 ArrayList。然后,您可以将相关的 QuestionId 添加到 ArrayList,而不是在内部 onDataChange() 中调用 updateUI()。当您完成对问题的迭代后(这样您就有了所有未回答问题的完整列表),您可以对 ArrayList 中的第一个问题调用 updateUI()

关于java - 比较不同的引用 (Firebase),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48238612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com