首页 > 解决方案 > 根据消息获取用户数据

问题描述

我正在使用 MVP 架构开发一个聊天应用程序,我想显示发送消息的用户的个人资料图片(头像),就像常规聊天应用程序一样,但我不知道如何访问“用户”节点基于消息的发送者。我的数据库结构如下所示:

在此处输入图像描述

我检索这样的消息:

交互者:

@Override
public void getChatRoomMessages(String uid) {
    mMessageReference.child(uid).addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            mMessage = dataSnapshot.getValue(Message.class);
            mMessagePresenter.showMessages(mMessage);
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }
       ...
}

我的适配器类:

public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageViewHolder> {

private List<Message> mMessages = new ArrayList<>();

@Override
public void onBindViewHolder(@NonNull MessageAdapter.MessageViewHolder holder, int position) {

    //set avatar of user
    Message msg = mMessages.get(position);
    int userid = msg.getSender();
    //use userid to query user node 

}

public void addMessages(Message message) {
    mMessages.add(message);
    notifyItemChanged(mMessages.size() - 1);
}

我需要根据“发送者”的用户 ID 查询用户节点,但是使用 MVP 方法我无法在适配器类中执行此操作。我可以在哪里以及如何使用“发件人”中的用户 ID 查询用户节点?

标签: androidfirebasemvp

解决方案


推荐阅读