gpt4 book ai didi

java - Firebase实时数据库,从键值对获取数据

转载 作者:行者123 更新时间:2023-12-02 10:35:09 24 4
gpt4 key购买 nike

我正在创建我的第一个 android firebase 测试项目,并在尝试取回数据时遇到问题。这是我的数据在控制台中的样子:

enter image description here

以及我的用于检索年龄和姓名的代码:

databaseReference.child("users").child(firebaseUserId).child("profile")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Users users = snapshot.getValue(Users.class);

Toast.makeText(LoginActivity.this, "Name: " + users.getName() + "\n" +
"Gender: " + users.getGender(), Toast.LENGTH_LONG).show();
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

User(POJO) 类如下所示:

public class Users {
String name, gender;

public Users() {
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}
}

但是,我无法执行此操作,并且程序因以下错误而崩溃:

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type project.ibrapptly.com.kcpe_tests_and_quizzes.Users

如何取回我的数据,或者最有效的方法是什么?

最佳答案

更改此:

databaseReference.child("users").child(firebaseUserId).child("profile")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Users users = snapshot.getValue(Users.class);

Toast.makeText(LoginActivity.this, "Name: " + users.getName() + "\n" +
"Gender: " + users.getGender(), Toast.LENGTH_LONG).show();
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

进入此:

databaseReference.child("users").child(firebaseUserId).child("profile")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Users users = dataSnapshot.getValue(Users.class);

Toast.makeText(LoginActivity.this, "Name: " + users.getName() + "\n" +
"Gender: " + users.getGender(), Toast.LENGTH_LONG).show();
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

在这种情况下,您需要删除 for 循环。当您循环时,您将检索 String 类型的属性 agename

关于java - Firebase实时数据库,从键值对获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53349822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com