java - 发送消息时出现重复项目

标签 java android

当用户提交图像而不是只显示一张图像时,会出现两张图像,然后导致我编写的每条消息重复出现。接收用户不会收到重复的内容,但发送的用户会收到重复的内容。有点奇怪,因为如果我离开对话并重新输入消息,重复的图像就不会再出现。

这是我认为造成冲突的代码。

@Override
    public void onBindViewHolder(@NonNull final MessageViewHolder messageViewHolder, int i)
    {
        String messageSenderId = mAuth.getCurrentUser().getUid();
        Messages messages = userMessagesList.get(i);

        String fromUserID = messages.getFrom();
        String fromMessageType = messages.getType();

        usersRef = FirebaseDatabase.getInstance().getReference().child("Users").child(fromUserID);

        usersRef.addValueEventListener(new ValueEventListener()
        {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot)
            {
                if (dataSnapshot.hasChild("image"))
                {
                    String receiverImage = dataSnapshot.child("image").getValue().toString();

                    Picasso.get().load(receiverImage).placeholder(R.drawable.profile_image).into(messageViewHolder.receiverProfileImage);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError)
            {

            }
        });


        messageViewHolder.receiverMessageText.setVisibility(View.GONE);
        messageViewHolder.receiverProfileImage.setVisibility(View.GONE);
        messageViewHolder.senderMessageText.setVisibility(View.GONE);
        messageViewHolder.messageSenderPicture.setVisibility(View.GONE);
        messageViewHolder.messageReceiverPicture.setVisibility(View.GONE);



        if (fromMessageType.equals("text"))
        {
            if (fromUserID.equals(messageSenderId))
            {
                messageViewHolder.senderMessageText.setVisibility(View.VISIBLE);

                messageViewHolder.senderMessageText.setBackgroundResource(R.drawable.sender_messages_layout);
                messageViewHolder.senderMessageText.setText(messages.getMessage());
            }
            else
            {
                messageViewHolder.receiverProfileImage.setVisibility(View.VISIBLE);
                messageViewHolder.receiverMessageText.setVisibility(View.VISIBLE);

                messageViewHolder.receiverMessageText.setBackgroundResource(R.drawable.receiver_messages_layout);
                messageViewHolder.receiverMessageText.setText(messages.getMessage());
            }
        }
        else if (fromMessageType.equals("image"))
        {
            if (fromUserID.equals(messageSenderId))
            {
                messageViewHolder.messageSenderPicture.setVisibility(View.VISIBLE);

                Picasso.get().load(messages.getMessage()).resize(1000, 1000).centerInside().into(messageViewHolder.messageSenderPicture);
            }
            else
            {
                messageViewHolder.receiverProfileImage.setVisibility(View.VISIBLE);
                messageViewHolder.messageReceiverPicture.setVisibility(View.VISIBLE);

                Picasso.get().load(messages.getMessage()).resize(1000, 1000).centerInside().into(messageViewHolder.messageReceiverPicture);
            }
        }
    }

这是发送时重复消息错误的打印屏幕。 enter image description here

最佳答案

在从 firebase ex 接收数据之前清除接收数据列表。列表.clear()

关于java - 发送消息时出现重复项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56012821/

相关文章:

java - 绘制位图最快的方法

java - 应用程序卡在 serverSocket.accept() 并提供已在第二次调用线程时使用的绑定(bind)异常地址

java - Java 的 java.util.concurrent 包的 .NET 等价物是什么?

java - 我无法通过启动jetty9连接到数据库

java - 是否有与 JFrame.pack() 等效的方法,仅在子组件小于其数据模型时才调整子组件的大小?

android - 在 Android 中设置每月重复通知

java - 如何知道邮件是否真的发送?

android - 异步更新 ListFragment

android - Android 中的 Unicode 问题

Android:Thread.sleep 没有结束