我使用push来保存firebase上的数据,它会自动保存自己的推送ID,现在我正在尝试检索用于历史记录的数据,但我不能因为这个ID。这就是我所拥有的
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child(Config.MESSAGE).child(userName).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Getting the data from snapshot
Message message = dataSnapshot.getValue(Message.class);
for (int i = 0; i < 11; i++) {
message.setMessage(message.getMessage() + i);
message.setTitle(message.getTitle() + i);
message.setTime(message.getTime() + i);
System.out.println("we in" + message.getTitle());
/******** Take Model Object in ArrayList **********/
CustomListViewValuesArr.add(message);
Resources res =getResources();
/**************** Create Custom Adapter *********/
adapter=new CustomAdapter(CustomListView, CustomListViewValuesArr,res);
list.setAdapter(adapter);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Log.w(TAG, "getUser:onCancelled", databaseError.toException());
// ...
}
});
}
这就是数据的样子
-KRjrOKWwCa6zmhyyhvf
body: "Hi how you doing"
time: "test"
title: "push"
-KRjjiiuwCa6zmhKVsro
body: "Hi how you doing"
time: "test"
title: "push"
-KRjrOef45a6zmhKbytr
body: "Hi how you doing"
time: "test"
title: "push"
我每次都会变为空
答案 0 :(得分:2)
看起来您有一个用户的消息列表。但是您的代码似乎将结果视为单个消息。那不行。
如果确实如此,请尝试:
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot messageSnapshot: dataSnapshot.getChildren()) {
Message message = messageSnapshot.getValue(Message.class);
我们最近在Firebase documentation on querying data上添加了一个关于此的示例。