Qk *_*ita 4 android firebase firebase-realtime-database
这是我的UserModel类
public class UserModel {
private String userName;
private String password;
public UserModel(String userName, String password) {
this.userName = userName;
this.password = password;
}
public String getUserName() {
return userName;
}
public String getPassword() {
return password;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我从firebase获取数据的方法
userReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
HashMap<String, UserModel> userModelHashMap = (HashMap<String, UserModel>) dataSnapshot.getValue();
ArrayList<UserModel> userModelList = new ArrayList<>(userModelHashMap.values());
if (userModelList.size() != 0) {
Log.d(TAG, "onDataChange: " + userModelList.get(0));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Run Code Online (Sandbox Code Playgroud)
它成功登录.
onDataChange:{password = abcde,userName = 1234}
在我想记录更多细节之前,一切似乎都没问题
Log.d(TAG, "onDataChange: " + userModelList.get(0).getUserName());
Run Code Online (Sandbox Code Playgroud)
这是我改变代码后这一行的错误
java.lang.ClassCastException:java.util.HashMap无法强制转换为qklahpita.vn.testfirebasedemo.UserModel
我无法理解为什么getUserName()出错.如果userModelList.get(0)没有返回UserModel,它返回什么?
这是因为您获得的数据是"HashMap"而不是"UserModel".您可以这样做来创建对象.
UserModel userModel = dataSnapshot.getValue(UserModel.class);
Run Code Online (Sandbox Code Playgroud)
编辑:如果有多个用户,您还需要循环访问子项.像这样.
for(Datasnapshot userSnapshot : dataSnapsot.getChildren(){
UserModel userModel = userSnapshot.getValue(UserModel.class);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3590 次 |
| 最近记录: |