Когда я отправляю сообщение, я вижу его в FireBase, но я не могу прочитать его на эмуляторе или на моем телефоне, он ничего не показывает - PullRequest
0 голосов
/ 02 мая 2020

Я делаю приложение для чата ... но когда я отправляю сообщение, которое оно отправило, и я вижу его на firebase, но в emuloter и телефоне я не могу ... почему это происходит? я думаю, что проблема может быть в readMessages ()

Это мой класс активности чата

   userQuery.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                String name = "" + ds.child("name").getValue();
                hisImage = "" + ds.child("image").getValue();

                nameTv.setText(name);
                try {
                    Picasso.get().load(hisImage).placeholder(R.drawable.ic_defult_img_face).into(profileTv);
                } catch (Exception e) {
                    Picasso.get().load(R.drawable.ic_defult_img_face).into(profileTv);
                }
            }
        }

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

        }
    });

    sendBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String message = messageEt.getText().toString().trim();
            if (TextUtils.isEmpty(message)) {
                Toast.makeText(ChatActivity.this, "Cannot send empty message...", Toast.LENGTH_SHORT).show();
            } else {
                sendMessage(message);
            }
        }

    });
    readMessages();
    seenMessages();
}

функция чтения и отправки

  private void readMessages() {
    chatList = new ArrayList<>();
    DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("Chats");
    dbRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            chatList.clear();
            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                Modelchat chat = ds.getValue(Modelchat.class);
                if (myUid.equals(chat.getReceiver()) && hisUid.equals(chat.getSender()) ||
                        hisUid.equals(chat.getReceiver()) && myUid.equals(chat.getSender())) {
                    chatList.add(chat);
                }
                adapterChat = new AdapterChat(ChatActivity.this, chatList, hisImage);
                adapterChat.notifyDataSetChanged();
                recyclerView.setAdapter(adapterChat);
            }
        }


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

        }
    });
}


private void sendMessage(String message) {


    DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();

    String timeStamp = String.valueOf(System.currentTimeMillis());

    HashMap<String, Object> hashMap = new HashMap<>();
    hashMap.put("Sender", myUid);
    hashMap.put("receiver", hisUid);
    hashMap.put("message", message);
    hashMap.put("timeStamp", timeStamp);
    hashMap.put("isSeen", false);

    databaseReference.child("Chats").push().setValue(hashMap);

    messageEt.setText("");
}

кто-нибудь может мне помочь? если вы хотите больше кода или оставьте комментарий, я его отправлю.

1 Ответ

0 голосов
/ 02 мая 2020

Я дам несколько советов:

Переместите это в свой readMessages():

chatList.clear();

И поместите его под это:

chatList = new ArrayList<>();
//here...

Убедитесь, что ваш Modelchat выглядит следующим образом:

class Modelchat{


//the main thing is that these must be written exactly like the keys in your database
private String Sender;
private String receiver;
private String message;
private String timeStamp;
private boolean isSeen;


public Modelchat(String Sender,String receiver,String message,String timeStamp,boolean isSeen){

this.Sender=Sender;
this.receiver=receiver;
this.message=message;
this.timeStamp=timeStamp;
this.isSeen=isSeen;
}


//generate also getters and setters......


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...