第一个 child 是我的UID码,很容易拿到,第二个 child 是发件人的UID,我拿不到 第三个 child 是唯一的 key 我只想检索每个发件人的最后一条消息
这是我的代码
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 并获取最后一条消息?
最佳答案
在你的数据库中你有:
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。
关于java - 如何获取在 firebase Messages 节点发送给我的最后一条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49167302/