【问题标题】:Retrieve data from firebase database with certain conditions在特定条件下从 firebase 数据库中检索数据
【发布时间】:2016-11-19 12:19:13
【问题描述】:

美好的一天,我正在使用 Android Studio 创建一个基于问答的游戏,我有两件事正在努力解决。我有一个具有以下结构的 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

有没有办法统计parent下的child数,比如应该告诉我parent 2下有2个child?

我的检索单个值的代码如下:

 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 个选项时,如上面的数据库结构中提到和所示,我的应用程序停止工作。

我们将不胜感激所有帮助。

【问题讨论】:

  • 如果您想获得所有 4 个答案选项,为什么还要使用 child("answer_option_1")?
  • 我不明白你为什么关心计算孩子的数量
  • @adolfosrs 我想计算孩子的数量,这样我就可以设置每个问题的选项数量。
  • @PrathamPatel “设置选项数量”是什么意思?您可以通过获取 options 数组大小来获取此数据。如果您还有任何疑问,请告诉我。

标签: java android firebase firebase-realtime-database


【解决方案1】:

我仍然不明白您为什么要计算孩子,但您可能有兴趣使用 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) {

        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 2019-02-07
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多