Sak*_*yed 2 android firebase firebase-realtime-database
我正在实现Firebase并将DataSnapshotnull 返回到自定义 java 对象。我也尝试通过使用此站点的一些答案来解决此问题,但我不知道我的代码中的确切问题在哪里。在这里,我附上了我screenshot的firebase 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} }
你的键不匹配,这就是为什么它返回空值检查你的屏幕截图和你的 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)
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |