2016-10-25 9 views
0

Android Studio 및 Firebase 자체를 처음 사용합니다. 고유 ID에서 자녀의 데이터를 가져 오려면 데이터 스냅 샷 방법을 사용해야 할 수도 있습니다. 예를 들어 Firebase 데이터베이스에서 name을 다시 Android Studio 응용 프로그램으로 가져와야합니다. 이 경우 어떻게 구현합니까? 도움을 많이 주시면 감사하겠습니다!Firebase에서 Android 스튜디오로 아동 정보 가져 오기

{ 
    "0Zs7aiWplRRJ5IJ5pazuUOxIdqz2" : { 

    "name" : "yeo", 
    "pos" : "intern", 
    "team" : "nwrs" 
    }, 
    "kaLCjJFoGETWCWH42kNkc90b5Ku1" : { 

    "2016" : { 
     "9" : { 
    "25" : { 
     ".priority" : 0.0, 
     "AM" : "", 
     "OT" : "", 
     "OVN" : "", 
     "PM" : "", 
     "TPT" : "" 
    } 
     }, 
     "10" : { 
    "1" : { 
     ".priority" : 0.0, 
     "AM" : "zxc11", 
     "OT" : "12", 
     "OVN" : "33", 
     "PM" : "222", 
     "TPT" : "54" 
    }, 
    "26" : { 
     "AM" : "aa", 
     "OVN" : "gg", 
     "PM" : "ccc", 
     "TPT" : "" 
    }, 
    "29" : { 
     ".priority" : 0.0, 
     "AM" : "dd", 
     "OVN" : "aa", 
     "PM" : "ss", 
     "TPT" : "2fd" 
    } 
     } 
    }, 
    "name" : "Jing Yang", 
    "pos" : "Intern", 
    "team" : "NWRS" 
    } 
} 

다음은 내 현재 코드

root.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Set<String> set = new HashSet<String>(); 
      Iterator i = dataSnapshot.getChildren().iterator(); 

      while (i.hasNext()){ 
       set.add(((DataSnapshot)i.next()).getKey()); 

      } 
      names.clear(); 
      names.addAll(set); 

      arrayAdapter.notifyDataSetChanged(); 
+0

:

public class Item { public string name; public string pos; public string team; } 

그런 다음 당신이 항목을 읽을 수 있습니다 : 귀하의 경우처럼 간단 할 수있다. 실제 JSON을 텍스트로 바꾸십시오. Firebase 데이터베이스 콘솔에서 내보내기 버튼을 클릭하면 쉽게 얻을 수 있습니다. JSON을 텍스트로 사용하면 검색이 가능해 지므로 실제 데이터로 테스트하고이를 사용하여 쉽게 답변 할 수 있습니다. 일반적으로 할 일은 단지 좋은 일입니다. –

답변

0

내가 root는 데이터베이스의 루트를 의미한다고 가정 것입니다. 이 경우 onDataChange은 해당 위치의 전체 데이터 스냅 샷을 가져옵니다. 당신은 그들에 루프를 할 수와 함께 차례로 각 아동의 특성을 얻을 :

root.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     Set<String> set = new HashSet<String>(); 
     for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) { 
      //set.add(childSnapshot.getKey()); 
      set.add(childSnapshot.child("name").getValue(String.class)); 
     } 
     names.clear(); 
     names.addAll(set); 

     arrayAdapter.notifyDataSetChanged(); 

하지만 내가보기 엔 당신이 당신의 목록에있는 항목을 나타내는 자바 클래스를 만드는 것이 좋습니다. 당신은 당신의 문제의 JSON 트리의 사진을 포함 시켰습니다

root.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     Set<String> set = new HashSet<String>(); 
     for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) { 
      Item child = childSnapshot.getValue(Item.class); 
      set.add(item.name); 
     } 
     names.clear(); 
     names.addAll(set); 

     arrayAdapter.notifyDataSetChanged(); 
+0

고마워요! 그것은 작동합니다! :) – yeo

+0

내가 2016 년에 중첩 된 아이를 갖게되면이 달을 어떻게 구성할까요? – yeo

+0

set.add (childSnapshot.child ("year"). 자식 ("month"). getValue (String.class)); – yeo

관련 문제