2017-03-23 2 views
0

Firebase 데이터베이스에서 값을 읽고 ListView에 표시하고 싶습니다. 그러나 뭔가 잘못되었습니다. 올바른 값을 제공하지 않습니다.Firebase 값 이벤트 리스너

자바

final FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    DatabaseReference reference = database.getReference("Stats").child(ders); 

    reference.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      stats.put(dataSnapshot.getKey(), dataSnapshot.getValue().toString()); 
      StatsAdapter adapter = new StatsAdapter(stats); 
      listView.setAdapter(adapter); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show(); 
      startActivity(new Intent(StatsActivity.this, DerslerListActivity.class)); 
     } 
    }); 

JSON

"Stats" : { 
"Matematik" : { 
    "ahmetozrahat25" : "50", 
    "nihatkeklik" : 50 
}, 
"Türkçe" : { 
    "abdullah" : 98, 
    "ahmetozrahat25" : "0", 
    "banuozrht" : 95, 
    "nihatkeklik" : 60 
} 
} 

결과가 Matematik, {ahmetozrahat=50, nihatkeklik=50}하지만 내가 원하는 : ahmetozrahat25: 50, nihatkeklik: 50을 여기에 코드입니다. 어떻게해야합니까?

+0

는 데이터베이스의 조각을 제공하는 데 도움이됩니다. – theblindprophet

+0

JSON 섹션에서 제공했습니다. 내 데이터베이스 전부를 원해? –

답변

1

Egek92's answer는 권리입니다. 그리고 왜 내가 원하는 데이터를 제공하지 않는지 알 것 같습니다. 아마이 다음 코드를 사용하여, 당신은 것입니다 :

DatabaseReference reference = database.getReference("Stats").child("Matematik"); 
reference.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     // dataSnapshot value will be Matematik, {ahmetozrahat=50, nihatkeklik=50} 
     // because it is indeed the value we need 

     // But you want key value pair to be added to your stats 
     // So we can just loop through the values 

     for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) { 
      stats.put(childSnapshot.getKey(), childSnapshot.getValue().toString()); 
     } 
     StatsAdapter adapter = new StatsAdapter(stats); 
     listView.setAdapter(adapter); 
    } 
    ... 
} 

희망이

+1

내 시간을 절약했습니다! 나는 루프를 잊었다. 감사! –

1

시도 :

DatabaseReference reference = database.getReference("Stats").child("Matematik"); 
+0

그것은 같은 것입니다 :/ –