Извлечение ребенка из базы без тега - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь получить дочерний узел из базы данных, у которого нет тега / имени.Я знаю, что это неправильный способ хранения дочерних узлов в базе данных firebase, это единственный способ, которым я могу сохранить их для работы функции подсчета.

Я пытаюсь получить категорию, которая будет «Технология» или«Биология и экология» среди прочих. Моя база данных настроена следующим образом:

  CountLikes{
    Project 23{
      Biological and Ecological{
          Votes: 1
                }}

    Project 32{  
      Biological and Ecological{ 
           Votes: 0
              }}

     Project 439{
      Technology{ 
          Votes: 2
               }}

Я могу получить название проекта (т. Е. «Проект 23», «Проект 32») и номерголосов, используя следующее:

 //Button Click Listener
    mReadButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

          DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("CountLikes/");

            ValueEventListener eventListener = new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {



                    for(DataSnapshot ds : dataSnapshot.getChildren()) {
                       String name = ds.getKey();
                       Long vote = ds.child("Votes").getValue(Long.class);


                       mProjectName.setText(name);
                       mProjectCategory.setText(String.valueOf(vote));
                    }
               }

                @Override
                public void onCancelled(DatabaseError databaseError) {}
            };
           ref.addListenerForSingleValueEvent(eventListener);

Можно ли как-нибудь найти категорию?

1 Ответ

0 голосов
/ 30 января 2019

Смысл вашей структуры данных мне неясен, что затрудняет точное понимание того, что вы ищете.Но этот код будет проходить через весь DataSnapshot с прослушивателем, который у вас есть:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("CountLikes");

ref.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot child: dataSnapshot.getChildren()) {
      System.out.println(child.getKey()); // prints "Project 23", "Project 32", etc
      for(DataSnapshot grandchild: child.getChildren()) {
        System.out.println(grandchild.getKey()); // prints "Biological and Ecological", etc
        System.out.println(grandchild.child("Votes").getValue(Long.class)); // prints 1, 0, etc
      }

    }

 }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    throw databaseError.toException();
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...