Firebase Android getValue(类)不起作用

时间:2018-05-09 18:21:41

标签: java android firebase firebase-realtime-database

所以这是我的绑定模型类:

public class UserBanknoteAmountBindModel {
    public String id;
    public String userId;
    public String banknoteType;
    public String banknoteAmount;

    public UserBanknoteAmountBindModel(){

    }

    public String getBanknoteAmount() {
        return banknoteAmount;
    }

    public String getBanknoteType() {
        return banknoteType;
    }

    public String getUserId() {
        return userId;
    }

    public void setBanknoteAmount(String banknoteAmount) {
        this.banknoteAmount = banknoteAmount;
    }

    public void setBanknoteType(String banknoteType) {
        this.banknoteType = banknoteType;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }
}

(如果在这种情况下访问修饰符很重要,则为idk)。 我正在尝试解析我的数据:

      for (DataSnapshot banknoteAmount:dataSnapshot.getChildren()){
           UserBanknoteAmountBindModel userBanknoteAmountBindModel=dataSnapshot.getValue(UserBanknoteAmountBindModel.class);

Log.wtf("hgfh", banknoteAmount.getValue().toString());
              }

我看到我正在接收我的数据,因为我可以记录它。

  

{banknoteAmount = 3,banknoteType = 20_dollar,   用户id = 112371098270685247195}

无论如何,我的数据并没有进入我的绑定模型。我读到某个地方,我不仅需要提供吸气剂,还需要提供吸尘器(这就是为什么我把这些定位器放到PS上:这对于设置者来说是真的吗?)。 有什么想法吗?

编辑:数据库结构https://i.stack.imgur.com/o5Hgp.png PS:问题是我使用了来自另一个函数的参数来获取getValue(不是foorloop变量)

1 个答案:

答案 0 :(得分:0)

要获取banknoteAmountbanknoteTypeuserId的值,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userBanknoteAmountRef = rootRef.child("userBanknoteAmount");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            UserBanknoteAmountBindModel userBanknoteAmountBindModel = ds.getValue(UserBanknoteAmountBindModel.class);
            String banknoteAmount = userBanknoteAmountBindModel.getBanknoteAmount();
            String banknoteType = userBanknoteAmountBindModel.getBanknoteType();
            String userId = userBanknoteAmountBindModel.getUserId();
            Log.d("TAG", banknoteAmount + " / " + banknoteType + " / " + userId);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
userBanknoteAmountRef.addListenerForSingleValueEvent(valueEventListener);

输出将是:

3 / 20_dollar / 112371098270685247195

当您使用以下代码行时:

banknoteAmount.getValue().toString()

您实际上正在打印banknoteAmount.getValue()的字符串表示形式,其中包含一个包含这三个值的Map对象作为返回值。