我正在开发一个聊天应用程序,其中包含与您聊天的人的列表,就像其他聊天应用程序一样。我需要更新列表,按谁是您的最后一个对话或谁是您最后的对话。因此,当我向某人发送消息时,我从他的列表中删除了我的行,然后再次创建它,并在列表中进行了更改。这是我的代码:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Query applesQuery = ref.child(theUID).child("messages").orderByChild("lastUIDTalkedTo").equalTo(hisU);
applesQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists())
{
for (DataSnapshot appleSnapshot: dataSnapshot.getChildren()) {
appleSnapshot.getRef().removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
FirebaseDatabase hisDbMessageList = FirebaseDatabase.getInstance();
final DatabaseReference hisDocMessageList = hisDbMessageList.getReference(hisUID).child("messages").push();
hisDocMessageList.setValue(new MessagesListModel(theUID , id , nickName , handle , country , returnThePostDate() ,
returnPostTime() , theUID , false));
}
});
}
}else
{
FirebaseDatabase hisDbMessageList = FirebaseDatabase.getInstance();
final DatabaseReference hisDocMessageList = hisDbMessageList.getReference(hisUID).child("messages").push();
hisDocMessageList.setValue(new MessagesListModel(theUID , id , nickName , handle , country , returnThePostDate() ,
returnPostTime() , theUID , false));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
它一直都无法正常工作。有什么想法可以使其真正好用吗?