我已经在firebase数据库中的USERID下的Post节点中相应地按照增量顺序将用户帖子详细信息存储为Post1,Post2等。现在我想逐个检索Post节点中的所有数据,降序为Post2,Post1并在自定义列表视图中显示。为了检索单个帖子节点数据,它工作正常但不能用于检索多个/所有帖子节点。 这是我的firebase数据库映像:
显示我尝试过的所有帖子:
dataref1.addValueEventListener(new
com.google.firebase.database.ValueEventListener() {
@Override
public void onDataChange(com.google.firebase.database.DataSnapshot
dataSnapshot) {
list.clear();
for(com.google.firebase.database.DataSnapshot dataSnap :
dataSnapshot.getChildren())
{
for(com.google.firebase.database.DataSnapshot datas :
dataSnap.getChildren()) {
DataModel datamodel =
dataSnap.getValue(DataModel.class);
list.add(datamodel);
}
}
CustomAdapter adapter = new CustomAdapter(Home.this,list);
listView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我检查了许多教程,但还没有找到解决方案。请帮助我。
谢谢:)
答案 0 :(得分:1)
要显示这些帖子,您需要更改一下Firebase数据库。目前,您的所有帖子都嵌套在uid
下。您需要添加另一个名为posts
的节点,uid
的直接子节点,您需要在其中单独添加所有这些帖子。您的数据库应如下所示:
Firebase-root
|
---- city: "City Name"
|
---- email: "name@email.com"
|
---- //and so on
|
---- posts
|
---- post1
|
---- post2
|
---- post3
|
//and so on
要熟悉这些帖子,请使用以下代码:
//get the uid
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
String uid = firebaseUser.getUid();
}
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference postsRef = rootRef.child(uid).child("posts");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String description = ds.child("description").getValue(String.class);
String dateTime = ds.child("dateTime").getValue(String.class);
String posturi = ds.child("posturi").getValue(String.class);
String severity = ds.child("severity").getValue(String.class);
Log.d("TAG", description + " / " + dateTime + " / " + posturi + " / " + severity);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);
答案 1 :(得分:0)