2016-07-16 4 views
1

Добрый день, я использую студию Android для создания игры на основе вопросов и ответов, и у меня есть 2 вещи, с которыми я борюсь. У меня есть база данных firebase со следующей структурой:Извлечь данные из базы данных firebase с определенными условиями

database name{ 
    answers{ 
     1{ 
      answer_option_1: ..... 
      answer_option_2: ..... 
      answer_option_3: ..... 
      answer_option_4: ..... 
      } 
     2{ 
      answer_option_1: ..... 
      answer_option_2: ..... 
      } 

И так оно и происходит, как показано выше. Вопрос в том, как я могу найти варианты ответа и сохранить их в соответствующих переменных? такие как:

ОПЦИЯ1 = answer_option_1

Есть ли способ, чтобы подсчитать количество детей в родителях, например, он должен сказать мне, что под родителем 2, есть 2 детей?

Мой код для получения одного значения следующим образом:

mDatabase.child("answers").child(num).child("answer_option_1").addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      Option1 = dataSnapshot.getValue().toString(); 
      option1.setText(Option1); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

где mDatabase это ссылка на мой Firebase базы данных и NUM является случайной величиной, чтобы получить случайный вопрос. Я повторил вышеуказанный код 4 раза для 4-х опций, но когда у меня есть 2 варианта, как указано и показано в структуре базы данных выше, мое приложение перестает работать.

Вся помощь будет очень признательна.

+0

Почему вы используете 'ребенок («answer_option_1») ', если вы хотите получить все 4 варианта ответа в любом случае? – Dreamcooled

+0

Я не понял, почему вы относитесь к подсчету числа детей – adolfosrs

+0

@adolfosrs Я хочу подсчитать количество детей, чтобы я мог установить количество опций для каждого вопроса. –

ответ

0

Я все еще не понимаю, почему вы хотите рассчитать детей, но вам может быть интересно использовать ChildEventListener, чтобы получить обратный вызов для каждого ребенка внутри /answers/num.

указан список, который будет отслеживать параметры:

List<String> options = new ArrayList<>(); 

И при загрузке вида или что-то убедитесь, что вы начинаете слушатель:

mDatabase.child("answers").child(num).addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot) { 
      String option = dataSnapshot.getValue().toString(); 
      options.add(option); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
Смежные вопросы