Как решить Android Firebase Нет сеттер / поле Проблема? - PullRequest
0 голосов
/ 05 октября 2018

Я хочу получать сообщения, отправленные пользователю в соответствии с идентификационным номером сообщения.Однако я не смог исправить ошибку «Нет установщика / поля».

Как решить эту проблему?Что такое метод?

Сообщения Java Class

public class Messages {
private String sendMessage;
private long timestamp;

public String getSendMessage() {
    return sendMessage;
}

public void setSendMessage(String sendMessage) {
    this.sendMessage = sendMessage;
}

public long getTimestamp() {
    return timestamp;
}

public void setTimestamp(long timestamp) {
    this.timestamp = timestamp;
}}

getMessage Class

 public void getMessage(){

    databaseReference = FirebaseDatabase.getInstance().getReference("Users").getRef();
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            if (dataSnapshot.exists()) {
                messagesList = new ArrayList<>(); //Initialize the list
                for (DataSnapshot postSnapShot : dataSnapshot.getChildren()) {

                    Messages messages = postSnapShot.child("messages").child(auth.getUid()).child("message").getValue(Messages.class);
                    messagesList.add(messages);
                }
            }
        }

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

enter image description here

Iпросто хочу получать сообщения и метку времени. Но я получаю эту ошибку;

/com.****.chat W/ClassMapper: No setter/field for 05102018025211 found on class com.****.chat.Model.Messages
No setter/field for 05102018024849 found on class com.onsoftware.chat.Model.Messages

1 Ответ

0 голосов
/ 08 октября 2018

Чтобы решить эту проблему, используйте следующие строки кода:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference messageRef = rootRef.child("Users").child(uid).child("message").child(toUid).child("message");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<Messages> messagesList = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            Messages messages = ds.getValue(Messages.class);
            messagesList.add(messages);
            Log.d("TAG", messages.getSendMessage());
        }

        //Do what you need to do with your messagesList
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage());
    }
};
messageRef.addListenerForSingleValueEvent(valueEventListener);

, в котором toUid - это идентификатор пользователя, который получает сообщения.

Если вы хотитев какой-то момент, чтобы попробовать Cloud Firestore , здесь вы можете найти учебник о том, как создать приложение для чата с использованием Kotlin .

...