Почему этот код повторяется дважды против моей воли, и почему я получаю нулевое значение? - PullRequest
0 голосов
/ 15 февраля 2020

Кос Айма Шел Колхем, Колам стремятся стать CS Aval afhad lo yodel lama ze mahzir null. Тамото.

Я пытаюсь создать приложение для чата. У меня нет проблем с отправкой сообщения в базу данных firebase, но когда я пытаюсь прочитать его, оно вылетает, сообщая, что я получаю нулевое значение.

Когда я печатал информацию и пытался получить только ту часть, которая в нем указана, является нулевой, он печатал ее дважды, как будто я повторяю ее.

В первой итерации я получаю идентификатор получателя (в данном случае, потому что это то, что я просил), а во второй итерации я получаю нулевое значение и не знаю почему. Я пытаюсь получить получателя (должен вернуть его идентификатор, в первой итерации я получаю идентификатор, как и ожидалось, а во второй я получаю ноль).

Я хочу, чтобы dataSnapshot вернул идентификатор получателя и создал instance из class Chat из информации в dataSnapshot. Значение возвращаемого моментального снимка данных: отправленное мной сообщение, получатель этого сообщения и отправитель (текущий пользователь).

мой код:

private void readMessages(final String myId, final String userId) {
    chatList = new ArrayList<>();
    reference = FirebaseDatabase.getInstance().getReference(CHATS);
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            Chat chat = dataSnapshot.getValue(Chat.class);
            Log.d(TAG, "onDataChange: " + chat.getReceiver());
            **if (chat.getReceiver().equals(userId)) { ** > crashing here, saying getReceiver is null
                chatList.add(chat);
            }
            adapter = new ConversationAdapter(chatList);
            converstaionRecyclerView.setAdapter(adapter);
        }

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

        }
    });
}

мой класс чата :

public class Chat {

    String sender;
    String receiver;
    String message;

    public Chat(String sender, String receiver, String message) {
        this.sender = sender;
        this.receiver = receiver;
        this.message = message;
    }

    public Chat() {
    }

    public String getSender() {
        return sender;
    }

    public void setSender(String sender) {
        this.sender = sender;
    }

    public String getReceiver() {
        return receiver;
    }

    public void setReceiver(String receiver) {
        this.receiver = receiver;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

json в ЧАТАХ:

{
    "chats" :
    {
        "-M-l8qvu9AXe9sCSKoKf" :
        {
            "message" : "h\n",
            "receiver" : "receiver id (to whom i sent)",
            "sender" : "current user id "
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...