获取随机ID的孩子

时间:2016-12-26 23:56:42

标签: android firebase firebase-realtime-database

我有一个像这样的Firebase数据库,我希望得到推送生成ID的子项,例如correcta

到目前为止,我已经做到了这一点,但它永远不会得到任何东西:

mdatabase=FirebaseDatabase.getInstance().getReference().child("Questions");
mdatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            String key=dataSnapshot.getKey();
            DatabaseReference questiondatabase=mdatabase.child(key);

            questiondatabase.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    Map<String, String> itemPrice = dataSnapshot.getValue(Map.class);

                    txtpregunta=itemPrice.get("pregunta");
                    txtopcion1=itemPrice.get("opcion1");
                    txtopcion2=itemPrice.get("opcion2");
                    txtopcion3=itemPrice.get("opcion3");
                    txtopcion4=itemPrice.get("opcion4");

                    Map<String, Integer>correctagetter = dataSnapshot.getValue(Map.class);

                    correcta=correctagetter.get("correcta");
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Firebase

由于

1 个答案:

答案 0 :(得分:2)

将值侦听器附加到节点时,将获得包含该节点下所有数据的快照。您不必附加更多侦听器即可在树中更深入地获取数据。

相反,您只需要遍历快照的子项:

DatabaseReference questionsRef = FirebaseDatabase.getInstance().getReference().child("Questions");
questionsRef.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot questionsSnapshot) {
    for (DataSnapshot questionSnapshot: questionsSnapshot.getChildren()) {
      String questionKey = questionSnapshot.getKey();
      String pregunta = questionSnapshot.child("pregunta").getValue(String.class);
      String opcion1 = questionSnapshot.child("opcion1").getValue(String.class);
    }
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    throw databaseError.toException();
  }
});

高度建议你选择Firebase codelab for Android