如何从firebase java获取Parent Value

时间:2014-11-06 09:59:03

标签: java firebase

我目前刚接触Firebase。

我把钥匙放在 - >>用户>答案 - >的 - >真 然后我用了这个:

Firebase re = New Firebase(blabla..user->answer);

refLoadId_Question_Question.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Map<String, Object> newPost = (Map<String, Object>) dataSnapshot.getValue();
            System.out.println("Id_question1: " + dataSnapshot.getValue());
            System.out.println("Id_question1: " + dataSnapshot.getChildren().toString());
            list_id_question.add(dataSnapshot.getKey());
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

我在dataSnapsho.getValue()中收到:Id_question1:{ - Ja3RTtq5DMGIdVF9-pC = true};

我的问题是可以从java中获取Object类型的键值吗?我想得到这个值: -Ja3RTtq5DMGIdVF9-pC

任何人请帮忙? 感谢..

2 个答案:

答案 0 :(得分:1)

你需要迭代孩子:

for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
    System.out.println(childSnapshot.getKey());
}

或者你也可以听孩子而不是整个答案对象:

refLoadId_Question_Question.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot childSnapshot) {
        System.out.println(childSnapshot.getKey());
    }
}

当你开始处理数据同步而不仅仅是拉下初始数据时,后者会变得更简单。

假设您有两个人在使用您的应用程序:

  1. 第一个用户正在查看问题和(为了这个例子)它的两个答案
  2. 第二个用户正在为同一个问题提供第三个答案
  3. 最初,第一个用户将下载问题和两个答案。然后当第二个用户提供第三个答案时,您的初始代码将(可能)重新下载所有三个答案。只会为新答案调用第二个示例。

答案 1 :(得分:0)

我目前使用此代码获取ID。

但如果ID问题不止一个,我就不会尝试

if (dataSnapshot.getValue() != null) {
        Map<String, Object> newPost = (Map<String, Object>) dataSnapshot.getValue();
        String ID_Question = newPost.keySet().toString().replace("[", "");
        ID_Question = ID_Question.replace("]", "");
        System.out.println("Id_question1: " + ID_Question);
        list_id_question.add(ID_Question);
    }