Android Firebase:Hashmap无法转换为给定的Object类型

时间:2017-12-01 22:25:52

标签: java android firebase

我试图查询firebase数据库以检查用户是否存在,我可以将其登录。但是,一个奇怪的问题完全阻止了我:

查询代码

String email = emailEditText.getText().toString();
String password = emailEditText.getText().toString();

fbUsers.orderByChild("email").equalTo(email).limitToFirst(1).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        HashMap<String, User> usersHashMap = (HashMap<String, User>) dataSnapshot.getValue();

        Map.Entry<String, User> firstEntry = usersHashMap.entrySet().iterator().next();
        User foundUser = firstEntry.getValue();

        Log.d("Login: ", foundUser.getEmail());
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

用户类

public class User {
    private String email;
    private String password;

    User() {}

    public User(String email, String password) {
        this.email = email;
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

奇怪的问题是编译器说ALL OK但是,在运行时环境中,Log.d()抛出了这个异常

  

java.lang.ClassCastException:java.util.HashMap无法强制转换为   com.example.project.User

2 个答案:

答案 0 :(得分:1)

此代码使用db.Car_Dealership.find("this.Totalfleetunits.replace(',','') >= 1000").count() 获取单个查询结果的快照。

getChildren().iterator().next()

答案 1 :(得分:-2)

您是否尝试过调用getValue(User.class)?