繁体   English   中英

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

[英]Retrieve data from firebase database with certain conditions

美好的一天,我正在使用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个选项时,如上面的数据库结构所示,我的应用程序停止工作。

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

我仍然没有得到你为什么要计算孩子,但你可能有兴趣使用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) {

        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM