Вот мой код
if (v == btnAddition) {
dbRef = FirebaseDatabase.getInstance("https://mathcc-652c5-default-rtdb.asia-southeast1.firebasedatabase.app/").getReference("Quizzes").child("1");
System.out.println(dbRef.child("addition").get().toString());
dbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
QuizList quizList = snapshot.getValue(QuizList.class);
String addition = quizList.getAddition();
System.out.println(quizList.getAddition());
if (addition.equals("yes")) {
QuizList quizList1 = new QuizList("no"
, quizList.getMultiplication()
, quizList.getSubtraction()
, quizList.getDivision()
, quizList.getMeasurement());
dbRef.setValue(quizList1);
return;
} else if (addition.equals("no")) {
QuizList quizList1 = new QuizList("yes"
, quizList.getMultiplication()
, quizList.getSubtraction()
, quizList.getDivision()
, quizList.getMeasurement());
dbRef.setValue(quizList1);
return;
}
} else {
QuizList quizList = new QuizList("yes", "yes", "yes", "yes", "yes");
dbRef.setValue(quizList);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
он продолжает зацикливаться в вечности всякий раз, когда я нажимаю кнопку. Я не знаю, что я делаю неправильно. Я новичок в firebase и android, пожалуйста, помогите
Данные, которые я пытаюсь изменить в своей базе данных:

Когда вы вызываете addValueEventListener на пути, ваш onDataChange вызывается сразу с текущим значением на пути, и затем он также будет вызываться всякий раз, когда какие-либо данные в пути изменяются.
Поскольку вы записываете обратно по тому же пути в своем onDataChange, это снова запускает прослушиватель, который снова вызывает ваш onDataChange, который затем снова записывает тот же путь, который снова запускает прослушиватель.... и т. д.
Если вы хотите только прочитать данные один раз, используйте get() или addListenerForSingleValueEvent:
dbRef.addListenerForSingleValueEvent(new ValueEventListener() {
...
Это исправило это. Большое спасибо!