2017-03-23 2 views
0

Firebaseデータベースから値を読み取り、ListViewに表示したいと考えています。しかし何かが間違ってしまった。それは正しい値を与えていない。ここでは、コードは次のとおりです。Firebaseの値イベントリスナー

のJava

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

それは同じことです:/ –

関連する問題