这是我的数据库:
我想从stats.20201104。Nutritions.protein中获取数据,应该为2。
对于上面的所有其他节点,我已经能够通过User POJO类设置很好地获取数据。我似乎无法找出一种获取日期值的方法,例如20201104,一般来说,它在运行日志中表示以下内容:
在com.example.nutrobud.ui.home.Stats类上找不到20201104的设置者/字段
我知道我的Stats.java类未正确设置,如何设置它以便仍保持相同的db节点层次结构?
这是User.java中的User类:
public class User {
private String email;
private String password;
private String firstName;
private String secondName;
private int age;
private String gender;
private int weight;
private List<String> ingredientsNo;
private List<String> ingredientsYes;
private List<Integer> ingredientsYesGoalsQty;
private List<Integer> ingredientsYesTrackedQty;
private int calorieGoalsQty;
private int calorieTrackedQty;
private Stats stats;
//constructors
//basic getter and setters for all data members
}
Stats.java,与User.java相同的目录:
public class Stats {
private int caloriesTracked;
private HashMap<String, Integer> nutrients;
//constructors
//basic getter and setters for all data members
}
在活动中从数据库读取数据的功能:
db.child("users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot: dataSnapshot.getChildren()){
User user = snapshot.getValue(User.class);
//do something with user
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
答案 0 :(得分:0)
您已经接近了,但是现在您的POJO中没有任何内容来捕获错误消息所提及的20201104
。由于您不知道实际的键,因此这些键必须是一张地图。
所以我认为你是
private Stats stats;
实际上应该是:
private Map<String, Stats> stats;