Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我正在尝试创建一个聊天活动,用户可以在其中进行个人聊天。但是有些人不知道如何从数据库中检索单个数据_Java_Android_Firebase Realtime Database - Fatal编程技术网

Java 我正在尝试创建一个聊天活动,用户可以在其中进行个人聊天。但是有些人不知道如何从数据库中检索单个数据

Java 我正在尝试创建一个聊天活动,用户可以在其中进行个人聊天。但是有些人不知道如何从数据库中检索单个数据,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我正在尝试创建聊天活动,并尝试从firebase检索所有消息。当我发送消息时,该消息已存储在firebase中,但在接收时,收到了一条消息。我无法理解我的代码中的问题 personalChat.java//onstart方法 protected void onStart() { super.onStart(); rootRef.child("Message").child(CurrentUserId).child(msgReciverId).addChildEventListe

我正在尝试创建聊天活动,并尝试从firebase检索所有消息。当我发送消息时,该消息已存储在firebase中,但在接收时,收到了一条消息。我无法理解我的代码中的问题

personalChat.java//onstart方法

 protected void onStart() {
    super.onStart();
    rootRef.child("Message").child(CurrentUserId).child(msgReciverId).addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
          message cMessage = dataSnapshot.getValue(message.class);
          messageList.add(cMessage);
          messageAdapter.notifyDataSetChanged();
        }

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

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

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

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}
message_adapter.java

 public class message_adapter extends RecyclerView.Adapter<message_adapter.MessageViewHolder> {
    private List<message> usermsgList;
    private FirebaseAuth mAuth;
    private DatabaseReference userref;
    public message_adapter(List<message> usermsgList){
        this.usermsgList = usermsgList;
    }

    @NonNull
    @Override
    public MessageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.coustommsglayout,parent,false);
        mAuth = FirebaseAuth.getInstance();

        return new MessageViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final MessageViewHolder holder, int position) {
        String msgsenderid = mAuth.getCurrentUser().getUid();
        message Message = usermsgList.get(position);
        String fromuserid = Message.getFfrom();
        String fromMessageType = Message.getType();

        userref = FirebaseDatabase.getInstance().getReference().child("User").child(fromuserid);
        userref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
              if (dataSnapshot.hasChild("image")){
                  String reciverimage = dataSnapshot.child("image").getValue().toString();
                  //Picasso.get().load(reciverimage).into(holder.reciverProfileImage);
              }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

        if (fromMessageType.equals("Text")){
            holder.recivermsgtext.setVisibility(View.INVISIBLE);
            holder.reciverProfileImage.setVisibility(View.INVISIBLE);
            if (fromuserid.equals(msgsenderid)){
                holder.sendermsgtext.setBackgroundResource(R.drawable.sendermsglayout);
                holder.sendermsgtext.setText(Message.getMessage());
            }else{
                holder.sendermsgtext.setVisibility(View.INVISIBLE);
                holder.recivermsgtext.setVisibility(View.VISIBLE);
                holder.reciverProfileImage.setVisibility(View.VISIBLE);
                holder.recivermsgtext.setBackgroundResource(R.drawable.recivermsglayout);
                holder.recivermsgtext.setText(Message.getMessage());
            }
        }
    }

    @Override
    public int getItemCount() {
        return usermsgList.size();
    }

    public class MessageViewHolder extends RecyclerView.ViewHolder{
        public TextView sendermsgtext,recivermsgtext;
        public CircleImageView reciverProfileImage;
        public MessageViewHolder(@NonNull View itemView){
            super(itemView);
            sendermsgtext = (TextView) itemView.findViewById(R.id.sender);
            recivermsgtext = (TextView) itemView.findViewById(R.id.reciver);
            reciverProfileImage = (CircleImageView) itemView.findViewById(R.id.profile_msg_dp);
        }
    }
}

如果在
message cMessage=dataSnapshot.getValue(message.class)上设置断点
并在调试器中运行代码,断点是否会被多次命中?还有两件事:1)请用实际的JSON(文本形式,无屏幕截图)替换数据的示意图表示。您可以通过单击溢出菜单中的“导出JSON”链接来实现这一点(⠇) 在.2)上,
userref.addValueEventListener
可能应该是
userref.addListenerForSingleValueEvent
。它不会修复您当前的问题,因此会将其发布在评论中,但会防止后续出现更多问题。
  Message
   JsmvpdGLjLbg9mQ0TfmKForis5q2
    PnYKrGiS7YUp9JdHNDMurOSbGBw1
    -LoHAND5o_T8S2NRECAH
     ffrom: "JsmvpdGLjLbg9mQ0TfmKForis5q2"
     message: "hello"
     type: "Text"
   -LoJCo9T7IrkHxD5xlZR
   ffrom: "JsmvpdGLjLbg9mQ0TfmKForis5q2"
   message: "whtsup"
   type: "Text"
   -LoJE04JSfl3BPyU3r9T
   ffrom: "JsmvpdGLjLbg9mQ0TfmKForis5q2"
   message: "wtsup"
   type: "Text"