第一个孩子是我的UID代码,很容易得到它,第二个孩子是发件人UID,我无法得到它 第三个孩子是一个独特的钥匙 我只是想为每个发件人检索最后一条消息
这是我的代码
String my_Id = currentuser.getUid();
dataQuery = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id);
dataQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot getalldata, String s) {
Map<String,Object> sender = (Map<String,Object>) getalldata.getValue());
for (Map.Entry<String, Object> entry : sender.entrySet()){
Map singleUser = (Map) entry.getValue();
String sender_UID = entry.getKey();
// I can't get UID of the sender so I can't get last message
}
}
@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.d("szx", "onCancelled", databaseError.toException());
}
});
问题是我无法获取发件人的UID,因此无法获取邮件 有没有办法获得最后的消息,而无需知道发件人的UID? 如果不可能,那么如何获取每个发件人的每个UID并获取最后的消息?
答案 0 :(得分:1)
在您的数据库中,您有:
Messages
idthatyoucanget
senderid
randomid
获取id,你无法尝试这个:
String my_Id = currentuser.getUid();
dataQuery = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id);
dataQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot getalldata, String s) {
String ids=getalldata.getKey();
}
}
@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.d("szx", "onCancelled", databaseError.toException());
}
});
由于您使用的是onchildadded,因此您无需迭代即可获取发件人ID。