2014-11-06 114 views
0

我目前剛接觸Firebase。如何從firebase中獲取父值java

我把鑰匙 - >>用戶>答案 - >關鍵 - >真 ,然後我用這個:

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) { 

     } 
    }); 

我收到:Id_question1:{-Ja3RTtq5DMGIdVF9-PC = true} in dataSnapsho.getValue();

我的問題是可能從Java中的對象類型獲取鍵值?我想得到這個值:-Ja3RTtq5DMGIdVF9-pC

any please please help? 謝謝..

回答

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); 
    } 
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. 第二用戶提供第三答案同樣的問題

最初第一個用戶將下載問題和兩個答案。然後當第二個用戶提供第三個答案時,您的初始代碼將(可能)重新下載所有三個答案。第二個例子將只爲新的答案。

+0

謝謝你快回答我要去嘗試,但現在我要去發現錯誤首先從我的應用程序我會盡快告訴你的。 – 2014-11-07 09:58:05