Android Firebase更新列表消息

时间:2018-10-18 10:37:13

标签: android firebase firebase-realtime-database

我正在开发一个聊天应用程序,其中包含与您聊天的人的列表,就像其他聊天应用程序一样。我需要更新列表,按谁是您的最后一个对话或谁是您最后的对话。因此,当我向某人发送消息时,我从他的列表中删除了我的行,然后再次创建它,并在列表中进行了更改。这是我的代码:

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) {
    }
});

它一直都无法正常工作。有什么想法可以使其真正好用吗?

0 个答案:

没有答案