gpt4 book ai didi

java - 将 DataSnapshot 转换为类对象

转载 作者:行者123 更新时间:2023-12-01 20:05:38 27 4
gpt4 key购买 nike

我是 Firebase 数据库的新手,我正在按照 Google 文档从我的数据库中检索数据。
我有这样的结构:

root/||--- 82JWZZZd***|    ||    |--- profile|         ||         |--- id: 1|         |--- name: Arnold Schwarzenegger|         |--- age: 70||--- GB3FDPiw***     |     |--- profile          |          |--- id: 1          |--- name: Sylvester Stallone           |--- age: 71

I want to retrive the profile information of a user and I have a Java class:

public class Profile{
private int id;
private String name;
private int age;

public Profile(){
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}

public Profile(int id, String name, int age){
this.id = id;
this.name = name;
this.age = age;
}
}

因此,正如我从 Google 文档中了解到的那样,我创建了一个监听器:

DatabaseReference reference = FirebaseDatabase.getInstance().getReference(getUid() + "/profile");
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
Toast.makeText(getContext(), "" + dataSnapshot.getValue(),
Toast.LENGTH_LONG).show();
// Profile prf = dataSnapshot.getValue(Profile.class);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {

}
});

Toast 向我展示了这个:
{id=1,姓名=阿诺·施瓦辛格,年龄=71}

但是如果我取消注释该行

Profile prf = dataSnapshot.getValue(Profile.class);

我的应用崩溃

我不明白与 Google 文档的区别。有人可以帮助我吗?我为此苦苦挣扎!

错误是:

com.google.firebase.database.DatabaseException: Class com.companyname.myApp.FirstFragment$Profile is missing a constructor with no arguments

最佳答案

如果您有私有(private)字段,则需要添加 getter 和 setter。如果您不需要 setter 和 getter,请使用公共(public)字段。

此外,由于您的 Profile 类嵌套在 fragment 内,因此您需要将其标记为static。所以公共(public)静态类配置文件{。另请参阅 Github 上的评论:https://github.com/firebase/FirebaseUI-Android/issues/46#issuecomment-167373575

关于java - 将 DataSnapshot 转换为类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47457511/

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