我正在使用Android中的Firebase创建聊天应用。
下面的代码用于聊天消息
SnapshotParser<GroupMessage> parser = new
SnapshotParser<GroupMessage>() {
@NonNull
@Override
public GroupMessage parseSnapshot(final
DataSnapshot dataSnapshot) {
final GroupMessage groupMessage =
dataSnapshot.getValue(GroupMessage.class);
if (groupMessage != null) {
groupMessage.setId(dataSnapshot.getKey());
}
return groupMessage;
}
};
这里,消息和回复数据都在不同的模型类(GroupMessage和MessageReplyModel)中,现在我想像Facebook一样显示消息和回复。
mFirebaseDatabaseReference.child
(Constants.MESSAGE_REPLIES).getRef()
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
MessageReplyModel replyModel = dataSnapshot1.getValue(MessageReplyModel.class);
replyModel.setId(dataSnapshot.getKey());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
如何在邮件下方显示特定邮件的答复。
在我的Firebase结构中,我还具有要执行回复的特定消息的消息ID。
那我该怎么做呢?
答案 0 :(得分:0)
我认为您应该将请求分为两个不同的查询:第一个处理消息主线程;和另一封邮件来处理对每条主要邮件的答复。
阅读:
databaseReference.child("MAIN_THREAD").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
// HANDLE DATA AND CHECK IF HAS REPLIES
if (dataSnapshot.getValue().getReplies() != null && dataSnapshot.getValue().getReplies().size() != 0){
FirebaseDatabase.getInstance().getReference().child("REPLIES_THREAD").orderByChild("PARENT_MESSAGE").equalTo("PARENT_UID")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//HANDLE REPLIES
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
......
});
写:
databaseReference.child("MAIN_THREAD").push().setValue(new Message());
databaseReference.child("REPLIES_THREAD").push().setValue(new Message());
databaseReference.child("MAIN_THREAD").child("PARENT_MESSAGE").child("replies").push().setValue("MESSAGE_UID");
代码应遵循此结构。请注意,这不是完整的代码,我输入了您必须适应所使用的代码和类的名称。
希望有帮助。