如何为两个用户加载消息?

时间:2019-09-17 17:22:59

标签: android firebase

我正在尝试创建类似于Instagram或Facebook的一对一聊天应用程序。用户可以成功发送消息,并且可以成功检索该消息并将其填充到回收视图中。问题如下,假设我以Bob的身份登录,我想向John发送消息,我键入消息并发送,但是该消息仅针对Bob出现,John没有收到我的消息。我将如何解决这个问题?任何帮助将不胜感激。

**Database**
Message
 8Ux6ahOko6SVskMXUMbnF7sFo8r2 (receiver id)
 qnrE4PTKbNdKNs33cKtx1qLEvnS2 (sender id)
 -Lp-BEGLeKAij6nqyiUQ (random messag)





public void onBindViewHolder(@NonNull MessageViewHolder viewHolder, int i) {
//        Glide.with(this.context).asBitmap().load(userData.get(i).getProfilepic()).into(viewHolder.profileImageView);
//        viewHolder.name.setText(userData.get(i).getName());
//        viewHolder.postTextView.setText(userData.get(i).getDescription());

        //logged in user will be the sender of the message
        String senderId = mAuth.getCurrentUser().getUid();
        Message  message= userMessagesList.get(i);

        String fromUser = message.getSender();


        Log.i("senderId", senderId.toString());
        Log.i("fromuser", fromUser);
        String fromUserId = message.getSender();

        if(fromUserId.equals(senderId)){
            viewHolder.senderTextView.setBackgroundResource(R.drawable.sender_messages_layout);
            viewHolder.senderTextView.setTextColor(Color.BLACK);
            viewHolder.senderTextView.setText(message.getMessage());
        }else{
            viewHolder.senderTextView.setVisibility(View.INVISIBLE);
            viewHolder.receiverTextView.setVisibility(View.VISIBLE);

            viewHolder.receiverTextView.setBackgroundResource(R.drawable.receiver_messages_layout);
            viewHolder.receiverTextView.setTextColor(Color.BLACK);
            viewHolder.receiverTextView.setText(message.getMessage());

        }







    }


**Loads data into recycle view**
    //populate messagerecycle view
    public void populateMessageRecycleView() {
        String messageSender = currentFirebaseUser.getUid(); 
        String messeaageReceiver = id; 
        firebaseDatabase.child("Message").child(messeaageReceiver).child(messageSender).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                //cleared message list to prevent duplication of data...
                messageList.clear();

                for (DataSnapshot data : dataSnapshot.getChildren()) {
                    if (data.exists()) {
                        messages = data.getValue(Message.class);
                        messageList.add(messages);

                    }

                }
                messageAdapter = new MessageAdapter(MessageActivity.this, messageList);
                messagesRecycleView.setAdapter(messageAdapter);

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

0 个答案:

没有答案