Как получить данные из базы данных firebase
, где мне нужно создать MLM или денежную цепочку пользователей, таких как пользователь, и у него есть два ребенка, как слева и справа в моей базе данных.Я создал как пользовательский корень и много реальных пользователей, которые содержат левые и правые идентификаторы пользователей, и я хочу получить счетчик двоичного дерева каждого пользователя
Это моя база данных
![enter image description here](https://i.stack.imgur.com/FMScz.png)
Я пробовал код для рекурсивного получения данных, и если левые и правые становятся равными нулю, я помещу созданный список из данных в метод для создания дерева MLM, но когдапоследний левый отсчитывается, он будет показывать левый и правый ноль, поэтому я не могу получить правильное количество узлов
public void methodForBinary( final String userId){
final DatabaseReference myRef = database.getReference("users/" + userId);
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
String left, right, name, rank;
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//Toast.makeText(Binary.this, , Toast.LENGTH_LONG).show();
//if ()
left = dataSnapshot.child("left").getValue().toString();
right = dataSnapshot.child("right").getValue().toString();
name = dataSnapshot.child("name").getValue().toString();
rank = dataSnapshot.child("rank").getValue().toString();
NameAndEarnings nameAndEarnings = new NameAndEarnings(name, userId, left, right, rank);
list.add(nameAndEarnings);
//methodforbinarycreation(list);
if (!left.equals("0")) {
methodForBinary(left);
}
if (!right.equals("0")) {
methodForBinary(right);
}
if (left.equals("0")&& right.equals("0")&& list != null) {
binary.methodinBinary(list);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
После этого я вызываю другой метод для создания графика, но, как вы можете видеть, его нетработая так, мне нужен способ, где я могу зациклить, чтобы получить счетчик и установить условие как счетчик, если счетчик завершен, тогда я могу остановиться и вызвать следующий метод, логика которого, как это требует