如何从firebase java获取父值

如何从firebase java获取父值,java,firebase,Java,Firebase,我目前是Firebase的新手 我在-->>用户->回答->键中输入了一个键 然后我用了这个: Firebase re = New Firebase(blabla..user->answer); refLoadId_Question_Question.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapsho

我目前是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) {

        }
    });
Firebase re=newfirebase(blabla..user->answer);
refLoadId\u Question\u Question.addListenerForSingleValueEvent(新值EventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
Map newPost=(Map)dataSnapshot.getValue();
System.out.println(“Id_question1:+dataSnapshot.getValue());
System.out.println(“Id_question1:+dataSnapshot.getChildren().toString());
list_id_question.add(dataSnapshot.getKey());
}
@凌驾
取消后的公共无效(FirebaseError FirebaseError){
}
});
我在dataSnapsho.getValue()中收到:Id_question1:{-Ja3RTtq5DMGIdVF9 pC=true}

我的问题是,在java中是否可以从对象类型中获取键值?我要获取此值:-Ja3RTtq5DMGIdVF9 pC

有人能帮忙吗?
谢谢..

您需要反复查看子项:

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());
    }
}
当您开始处理数据同步时,后者将变得更简单,而不仅仅是下拉初始数据

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

  • 第一个用户正在查看一个问题及其两个答案(在本例中)
  • 第二个用户正在为同一问题提供第三个答案

  • 最初,第一个用户将下载问题和两个答案。然后,当第二个用户提供第三个答案时,您的初始代码将(可能)重新下载所有三个答案。第二个示例将仅针对新答案调用。

    我当前使用此代码获取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);
        }
    
    if(dataSnapshot.getValue()!=null){
    Map newPost=(Map)dataSnapshot.getValue();
    字符串ID_Question=newPost.keySet().toString().replace(“[”,”);
    ID_-Question=ID_-Question.replace(“]”,“”);
    System.out.println(“Id问题1:+Id问题”);
    列出id问题。添加(id问题);
    }
    
    谢谢您的快速回答,我将尝试一下,但现在我将首先从我的应用程序中查找bug。我很快会告诉你的。