显示来自Firebase数据库的消息

阿基姆·詹姆斯

我正在创建一个社交消息应用程序。将消息保存到Firebase数据库,然后在RecyclerView上显示的方式是应用程序功能的理想选择。消息已保存到数据库,但不显示在RecyclerView上。

请帮忙...

谢谢

消息采用者类。

public class MessagesAdopter extends RecyclerView.Adapter {
    public MessagesAdopter(List<Messages> messagesList) {

    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return null;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {

    }

    @Override
    public int getItemCount() {
        return 0;
    }

    public class MessageAdopter extends RecyclerView.Adapter<MessageAdopter.MessageViewHolder> {
        private List<Messages> usersmessengeslist;
        private FirebaseAuth mAuth;
        private DatabaseReference userdatabaseref;

        public MessageAdopter (List<Messages> usersmessengeslist){
            this.usersmessengeslist = usersmessengeslist;
        }


        public class MessageViewHolder extends RecyclerView.ViewHolder {

            private TextView sender_typed_message,reciever_typed_message;
            CircleImageView reciever_image_view;
            public MessageViewHolder(@NonNull View itemView) {
                super(itemView);

                sender_typed_message = itemView.findViewById(R.id.sender_typed_message);
                reciever_typed_message = itemView.findViewById(R.id.reciever_typed_message);
                reciever_image_view = itemView.findViewById(R.id.reciver_profile_image);
            }
        }

        @NonNull
        @Override
        public MessageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View V = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.users_message_layout,parent ,false);

            mAuth = FirebaseAuth.getInstance();

            return new MessageViewHolder(V);
        }

        @Override
        public void onBindViewHolder(@NonNull final MessageViewHolder holder, int position) {
            String messagesenderid = mAuth.getCurrentUser().getUid();
            Messages messages = usersmessengeslist.get(position);

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

            userdatabaseref = FirebaseDatabase.getInstance().getReference().child("Users").child(fromUserID);
            userdatabaseref.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists()){
                        String image = dataSnapshot.child("profileimage").getValue(String.class);
                        Picasso.get().load(image).placeholder(R.drawable.profile).into(holder.reciever_image_view);
                    }
                }

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

                }
            });

            if (frommessagetype.equals("text")){
                holder.reciever_image_view.setVisibility(View.INVISIBLE);
                holder.reciever_typed_message.setVisibility(View.INVISIBLE);

                if (fromUserID.equals(messagesenderid)){
                    holder.sender_typed_message.setBackgroundResource(R.drawable.sender_message_background);
                    holder.sender_typed_message.setTextColor(Color.WHITE);
                    holder.sender_typed_message.setGravity(Gravity.LEFT);
                    holder.sender_typed_message.setText(messages.getMessage());

                }
                else
                    {
                    holder.sender_typed_message.setVisibility(View.INVISIBLE);

                    holder.reciever_typed_message.setVisibility(View.VISIBLE);
                    holder.reciever_image_view.setVisibility(View.VISIBLE);

                    holder.reciever_typed_message.setBackgroundResource(R.drawable.reciever_message_background);
                    holder.reciever_typed_message.setTextColor(Color.WHITE);
                    holder.reciever_typed_message.setGravity(Gravity.LEFT);
                    holder.reciever_typed_message.setText(messages.getMessage());
                }
            }

        }

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


}

聊天活动:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chat);
        mAuth = FirebaseAuth.getInstance();
        messagesenderuserIdD = mAuth.getCurrentUser().getUid();
        RootRef = FirebaseDatabase.getInstance().getReference();
        recievereruserid = getIntent().getExtras().get("visit_user_id").toString();
        recieverrusername = getIntent().getExtras().get("userName").toString();

        iniitializefeildz();
        displayrecieveruserinformtion();
        sendmessagebutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendusermessage();
            }
        });

        fetchmessage();

    }

    private void fetchmessage() {
        RootRef.child("Messages").child(messagesenderuserIdD).child(recievereruserid)
                .addChildEventListener(new ChildEventListener() {
                    @Override
                    public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                        Messages messages = dataSnapshot.getValue(Messages.class);
                        mMessagesList.add(messages);
                        MessagesAdopter.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) {

                    }
                });
    }

    private void sendusermessage() {
        String messagetext = user_inout_message.getText().toString();

        if (TextUtils.isEmpty(messagetext)){
            Toast.makeText(chatActivity.this,"please type a message",Toast.LENGTH_SHORT).show();
        }
        else {
            String message_sender_ref = "Messages/" + messagesenderuserIdD + "/" + recievereruserid;
            String message_reciever_ref = "Messages/" + recievereruserid + "/" + messagesenderuserIdD;

            DatabaseReference user_message_key = RootRef.child("Message").child(messagesenderuserIdD).child(recievereruserid).push();

            String message_push_id =user_message_key.getKey();

            Calendar callforddate = Calendar.getInstance();
            SimpleDateFormat currentdate =new SimpleDateFormat("dd-MMMM-yyyy");
            savecurrentdate= currentdate.format(callforddate.getTime());

            Calendar calFordTime = Calendar.getInstance();
            SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm");
            savecurrenttime = currentTime.format(callforddate.getTime());

            Map messageTextbody = new HashMap();
            messageTextbody.put("Message", messagetext);
            messageTextbody.put("time", savecurrenttime);
            messageTextbody.put("date", savecurrentdate);
            messageTextbody.put("type", "text");
            messageTextbody.put("from", messagesenderuserIdD);

            Map messageBodyDetails = new HashMap();
            messageBodyDetails.put(message_sender_ref + "/"+ message_push_id,messageTextbody);
            messageBodyDetails.put(message_reciever_ref + "/"+ message_push_id,messageTextbody);

            RootRef.updateChildren(messageBodyDetails).addOnCompleteListener(new OnCompleteListener() {
                @Override
                public void onComplete(@NonNull Task task) {
                    if (task.isSuccessful()){
                        Toast.makeText(chatActivity.this,"message sent successfully",Toast.LENGTH_SHORT).show();
                        user_inout_message.setText("");
                    }
                    else {
                        String message = task.getException().getMessage();
                        Toast.makeText(chatActivity.this,"Error" + message,Toast.LENGTH_SHORT).show();
                        user_inout_message.setText("");

                    }



                }
            });





        }

    }

    private void displayrecieveruserinformtion() {

        chat_username.setText(recieverrusername);
        RootRef.child("Users").child(recievereruserid).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                if (dataSnapshot.exists()){
                    final String profileimage = dataSnapshot.child("profileimage").getValue(String.class);
                    Picasso.get().load(profileimage).placeholder(R.drawable.profile).into(chat_circular_imageview);
                }

            }

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

            }
        });

    }

    private void iniitializefeildz() {
        mToolbar = findViewById(R.id.action_cjat_bar);
        setSupportActionBar(mToolbar);

        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setDisplayShowCustomEnabled(true);
        LayoutInflater layoutInflater= (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View action_bar_view = layoutInflater.inflate(R.layout.chat_custom_appbar,null);
        actionBar.setCustomView(action_bar_view);


        chat_username = findViewById(R.id.user_chat_displayname);
        chat_circular_imageview = findViewById(R.id.user_chat_displayimage);

        user_inout_message= findViewById(R.id.chat_write_message_here);
        sendmessagebutton = findViewById(R.id.send_chat_message);
        sendimagemessage = findViewById(R.id.chat_chooseimage);


        MessagesAdopter = new MessagesAdopter(mMessagesList);
        messagesview = findViewById(R.id.messageview_list);
        linearlayoutmanager = new LinearLayoutManager(this);
        messagesview.setHasFixedSize(true);
        messagesview.setLayoutManager(linearlayoutmanager);
        messagesview.setAdapter(MessagesAdopter);



    }
}
桑迪普·马利克(Sandeep Malik)

您好,我正在用Firebase数据库添加按摩,尝试使用它可以帮助您:-

private void readMessage(final String myId, final String userId) {
        mChat = new ArrayList<>();
        reference = FirebaseDatabase.getInstance().getReference(chatTableName);
        try {
            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    mChat.clear();
                    Chat chat = null;
                    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        chat = snapshot.getValue(Chat.class);
                        assert chat != null;
                        if (chat.getReceiver().equals(myId) && chat.getSender().equals(userId) ||
                                chat.getReceiver().equals(userId) && chat.getSender().equals(myId)) {
                            mChat.add(chat);
                        }
                        adapter = new MessageAdapter(UserMessageActivity.this, mChat);
                        recyclerView.setAdapter(adapter);
                    }
                }

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

                }
            });
        } catch (Exception e) {
            Toast.makeText(this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

显示来自 Firebase 实时数据库的数据

来自分类Dev

Firebase 显示来自数据库的不同评论

来自分类Dev

显示来自数据库PDO的数据

来自分类Dev

难以获得Realtime RecyclerView FirebaseUI android显示来自数据库的消息

来自分类Dev

显示来自数据库AngularJS的值

来自分类Dev

显示来自数据库单元的信息

来自分类Dev

显示来自android数据库的图像

来自分类Dev

显示来自数据库的主题标签

来自分类Dev

显示来自数据库的图像

来自分类Dev

显示来自 phpMyadmin 数据库的图像

来自分类Dev

来自Firebase数据库的汇总值

来自分类Dev

如何在nodeJS中显示来自firebase数据库的数据

来自分类Dev

来自 firebase 数据库调用的数组记录正确的数据,但长度显示为 0

来自分类Dev

如何在布局中显示来自 firebase 数据库的数据选择

来自分类Dev

如果无法从Firebase实时数据库检索数据,则尝试在UITableView上显示消息

来自分类Dev

Firebase数据库未显示数据

来自分类Dev

显示来自多个数据库表的数据

来自分类Dev

以html形式显示来自sqlite数据库的数据(phonegap)

来自分类Dev

PDO显示来自数据库的每个特定ID的数据

来自分类Dev

列表视图未显示来自Android数据库的数据

来自分类Dev

显示来自其他表的mysql数据库数据

来自分类Dev

根据MySQL数据库数据显示消息?C#

来自分类Dev

显示来自数据库Jquery的选定值

来自分类Dev

在日志中显示来自SQLite数据库的ArrayList

来自分类Dev

在模式引导窗口中显示来自数据库的图像

来自分类Dev

显示来自MySQL数据库中路径的图像

来自分类Dev

来自sqlite数据库的ios图像显示

来自分类Dev

显示来自数据库laravel的喜欢的产品

来自分类Dev

显示来自数据库ASP.Net的图像

Related 相关文章

热门标签

归档