【问题标题】:How to get array data on Firebase?如何在 Firebase 上获取数组数据?
【发布时间】:2017-07-12 02:24:10
【问题描述】:

我有这个 Firebase:

我正在尝试使用此代码获取所有问题数据:

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference questionsRef = database.getReference("questions");

questionsRef.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {

        HashMap question = dataSnapshot.getValue(HashMap.class);

        System.out.println(question.get("0"));
    }
}

但我得到了错误:

com.google.firebase.database.DatabaseException:类 java.util.HashMap 有泛型类型参数,请使用 而是 GenericTypeIndicator

我尝试了几种方法,但这是最后一个错误。如何获取每个问题的数据和问题的所有选项?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    "options" 不是映射,它是列表或数组。做这样的事情

    GenericTypeIndicator<List<String>> genericTypeIndicator = new GenericTypeIndicator<List<String>>() {};
    List<String> list = dataSnapshot.child("options").getValue(genericTypeIndicator);
    

    【讨论】:

      【解决方案2】:

      选项在我看来就像一个编号列表,所以不必使用地图来获取它的内容。

      GenericTypeIndicator<List<String>> gti = new GenericTypeIndicator<List<String>>() {};
      
      String question = dataSnapshot.child("question").getValue(String.class);
      List<String> questionOptions = dataSnapshot.child("options").getValue(gti);
      

      【讨论】:

        【解决方案3】:

        首先,您应该将question 类型更改为Map,而不是HashMap (like @varjo mentioned)

        其次,在您的代码中,您得到的值比应有的值高 1 步。所以应该是这样的:

        Map<String, String> question = dataSnapshot.child("options").getValue(Map.class);
        

        希望对你有帮助

        编辑

        要获取问题文本,请使用:

        String questionText = dataSnapshot.child("question").getValue(String.class);
        

        注意:为了获得最佳实践,我认为您应该创建一个自定义对象 将问题和选项结合在一起

        【讨论】:

          【解决方案4】:
          Map<String, String> question = dataSnapshot.child("options").getValue(Map.class);
          

          拿这个问题的数组..

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-11-20
            • 1970-01-01
            • 2018-03-17
            • 1970-01-01
            • 2019-03-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多