FirebaseDatabaseでデータに対して実行したい機能やプロセスを含むヘルパークラスを作成しました。Android - DataSnapShot - firebaseデータベースからオブジェクトを取得する
次の機能がfireabseDataBaseに投稿ノード内のすべての投稿を取得するために意図された:私は、データを得るか、ロギングながらも、私はデータをループにしようとしていますonDataChange
機能に
public static Jobs getAllJobs() {
Posts posts= new Posts();
postsDBRef= FirebaseDatabase.getInstance().getReference("posts").getRef();
postsDBRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot jobSnapshot: dataSnapshot.getChildren()) {
// TODO: handle the post
String key = jobSnapshot.getKey();
//here
Post post= jobSnapshot.child(key).getValue(Post.class);
// and here
posts.add(post);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i(getClass().getName().toString(), ": " + databaseError.getMessage());
}
});
return posts;
}
をし、それを取得するが、郵便物は、ここにデータがfirebaseデータベースに
{
"posts" : {
"-Kr9-ii-ArpC3fLuuGnb" : {
"address" : "sfhhfg",
"applied" : false,
"currency" : "le",
"description" : "ehdhyf",
"latitude" : 0,
"longitude" : 0,
"noOfWorkers" : 2,
"rating" : 0,
"reported" : false,
"salary" : "1250",
"title" : "rgchu",
"userId" : 0
},
"-Kr94BDkdEZrmxmjxv_Z" : {
/../
},
"-Kr9Dz3S0BQEYv4VO2l3" : {
/../
},
"-Kr9XqDPUvCRcv0lwFy_" : {
/../
}
}
}
ようになり、ここでgは午前何方法のnull
を与え続けます単一ループ内デバッガからetting
DataSnapshot {キー= -Kr9-II-ArpC3fLuuGnb、値= {アドレス= sfhhfg、 評価= 0、タイトル= rgchu、報告=偽、説明= ehdhyfは、ユーザーID = 0、 経度= 0、noOfWorkers = 2、緯度= 0、通貨=ル、適用=偽、 給与= 1250}}
私が間違っているの何任意のアイデア?いくつかの臨床試験.addChildEventListenerを使用して
.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Job job = snapshot.getValue(Job.class);
System.out.println(job.getTitle());
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i(getClass().getName().toString(), ": " + databaseError.getMessage());
}
});
後
'getDataBaseReference(" posts ")が返すものを知る方法がなく、' posts'のJSONがどのように見えるのかわかりません。質問に「問題を再現するのに必要な最小限の情報」が含まれていることを確認してください(http://stackoverflow.com/help/mcve)。 JSONを共有するときは、必ずテキストとして共有してください(スクリーンショットなし)。これは、[Firebaseデータベースコンソール](https://console.firebase.google.com/project/_/database/data)の[Export JSON]リンクをクリックすると表示されます。 –
@FrankvanPuffelenは追加情報を追加しました。不足している情報を指摘してくれてありがとう –
'getReference(" posts ")。getRef()' - > 'getReference(" posts ")'結果は同じですが、それは私にダブルテイクを救いました。 –