在某些条件下从firebase数据库中检索数据

时间:2016-07-16 11:00:51

标签: java android firebase firebase-realtime-database

美好的一天,我正在使用Android工作室创建一个基于问题和答案的游戏,我有两件事我正在努力。我有一个具有以下结构的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个选项时,如上面的数据库结构所示,我的应用程序停止工作。

所有帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分: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) {

        }
    });