gpt4 book ai didi

java - 使用 while 循环迭代 Firebase 数据库

转载 作者:行者123 更新时间:2023-12-01 21:14:24 24 4
gpt4 key购买 nike

我创建了一个复习问题表,每次用户答错问题时,都会将问题添加到该表中。当尝试使用此函数时,我会遍历表格来显示每个问题。

像这样:

databaseref = FirebaseDatabase.getInstance().getReference().child("Review Questions").child(userid).child("Pollution");

databaseref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
final Iterator<DataSnapshot> questions = dataSnapshot.getChildren().iterator();
while (questions.hasNext()) {
final DataSnapshot question = questions.next();
t1_question.setText(question.child("question").getValue().toString());
b1.setText(question.child("answer1").getValue().toString());
b2.setText(question.child("answer2").getValue().toString());
b3.setText(question.child("answer3").getValue().toString());
b4.setText(question.child("answerCorrect").getValue().toString());



b1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
incorrect++;
b1.setBackgroundColor(Color.RED);
b4.setBackgroundColor(Color.GREEN);

description.setBackgroundColor(Color.YELLOW);
description.setText(question.child("description").getValue().toString());


}

我有四个按钮,我刚刚以一个按钮为例。由于某种原因,它显示了复习问题表中的最后一个问题。所以它不会迭代它们,因为最后一个问题没有下一个值。

我还有一个下一个按钮,应该用于转到下一个问题,写法如下:

  next.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
b2.setBackgroundColor(Color.LTGRAY);
b1.setBackgroundColor(Color.LTGRAY);
b3.setBackgroundColor(Color.LTGRAY);
b4.setBackgroundColor(Color.LTGRAY);
description.setText("");
description.setBackgroundColor(Color.WHITE);
total = total + 1;

UpdateQuestion();
}
}, 1500);
}
});

显示数据库树,并用圆圈打印问题:

Database tree

我的代码有问题吗?

我似乎不明白为什么要这样做,

它是否有可能正在阅读其他问题,尽管我看不到这一点,因为没有什么可以暂停 while 循环?如果是这样我该怎么做

最佳答案

您在循环的每次迭代中设置相同按钮的标签:

b1.setText(...)

因此,在循环结束时,b1 最终得到最后一个问题的 answer1 值。

您需要为每个问题拥有/生成 UI 元素(标签、 TextView 、按钮)。典型的方法是使用 RecyclerView。我建议阅读 populating recyclerview from firebase因为这个话题相当广泛。

关于java - 使用 while 循环迭代 Firebase 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58883360/

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