Android Firebase DataSnapshot 类将 null 返回到自定义 java 对象

Sak*_*yed 2 android firebase firebase-realtime-database

我正在实现Firebase并将DataSnapshotnull 返回到自定义 java 对象。我也尝试通过使用此站点的一些答案来解决此问题,但我不知道我的代码中的确切问题在哪里。在这里,我附上了我screenshotfirebase database,请帮助我解决这个问题在此处输入图片说明

下面是我的model

        public class ChatModel {

    private String messege;
    private String user;
    private int intType;

    public ChatModel(){}

    public ChatModel(String messege, String user, int intType) {
        this.messege = messege;
        this.user = user;
        this.intType = intType;
    }


    public String getMessege() {
        return messege;
    }

    public void setMessege(String messege) {
        this.messege = messege;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public int getIntType() {
        return intType;
    }

    public void setIntType(int intType) {
        this.intType = intType;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的activity代码。

DatabaseReference messagesReference = reference1.child("messages/"+ UserDetails.username + "_" + UserDetails.chatWith);
        Log.e("messages URL "," ==>"+messagesReference);

            messagesReference .addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                Log.e("messages Referencev "," ==>"+dataSnapshot.toString());

                ChatModel map = dataSnapshot.getValue(ChatModel.class);
                String message = map.getMessege();
                String userName = map.getUser();

                Log.e("message ","  ==>"+message);  // Here I am getting null value

            }

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

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

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

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
Run Code Online (Sandbox Code Playgroud)

logcat显示这样的消息。
==>DataSnapshot { key = -KslrqBPRMNKkWQO15h_, value = {message=Hi This is sakib, user=sakib} }

akh*_*707 5

你的键不匹配,这就是为什么它返回空值检查你的屏幕截图和你的 ChatModel 类,str从你的 ChatModel 类变量中删除,并再次生成 getter setter

这可能对你有帮助。

public class ChatModel {

  private String messege;
  private String user;
  private int intType;
  // TODO generate getter setter again
}
Run Code Online (Sandbox Code Playgroud)

您也可以通过地图获取值

Map<String,String> map=(Map<String,String>)dataSnapshot.getValue();
String message = map.get("message");
String userName = map.get("user");
Log.e("message ","  ==>"+message);
Run Code Online (Sandbox Code Playgroud)