为了账号安全,请及时绑定邮箱和手机立即绑定

如何在id下检索许多值

如何在id下检索许多值

慕雪6442864 2022-05-12 15:40:29
我正在检索 id 下的许多值,但它不起作用。这应该很容易,但我被卡住了。这是我的数据结构:Attendance    x73aXTQHXHXHQ         current          value: "Bill Gates"        company          value: "Apple"        history            -La7wew7hdxccdcdzssf                   value: 156000000001            -La7wptthd3ceeqoz34f                   value: 156000000002            -La7wew7hdxccdcdzssf                   value: 156000000003我已经尝试过这段代码,并且只成功检索了 children count ,而不是我想要的Output: 3children 值。156000000001这是我的代码,任何帮助谢谢。if (uid != null) {   ref.child(uidKeys).child(uid).child("history").addValueEventListener(new ValueEventListener() {     @Override     public void onDataChange(@NonNull DataSnapshot dataSnapshot) {          int countUnderHistory = (int) dataSnapshot.getChildrenCount();          long[] dataHistory = new long[countUnderHistory];          int index = 0;          for (DataSnapshot push : dataSnapshot.getChildren()) {               NonDuplicateAttendance nDa = push.getValue(NonDuplicateAttendance.class);                     if (nDa != null) {                         dataHistory[index] = nDa.getuHistory();                     }                     index++;          }      }           @Override           public void onCancelled(@NonNull DatabaseError databaseError) {           }   });}NonDuplicateAttendance类:package com.example.aspireone.myapplication;public class NonDuplicateAttendance {    private long value;    public NonDuplicateAttendance(long value) {        this.value = value;    }    public long getuHistory() {        return value;    }}
查看完整描述

1 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

既然你没有分享你的NonDuplicateAttendance我不能说那里出了什么问题。但是要打印历史记录中的值:


ref.child(uidKeys).child(uid).child("history").addValueEventListener(new ValueEventListener() {

    @Override

    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

        for (DataSnapshot snapshot: dataSnapshot.getChildren()) {

            System.out.println(snapshot.child("value").getValue(Long.class));

        }

    }


    @Override

    public void onCancelled(@NonNull DatabaseError databaseError) {

        throw databaseError.toException(); // don't ignore errors

    }

});

编辑


您的类不起作用,因为它没有声明公共value属性。要解决这个问题:


public class NonDuplicateAttendance {


    public  long value;


    public NonDuplicateAttendance() { }


    public NonDuplicateAttendance(long value) {

        this.value = value;

    }


    @Exclude

    public long getuHistory() {

        return value;

    }

}

变化:

  • value字段是公开的,因此 SDK 将其识别为与valueJSON 中的属性匹配。

  • 我添加了一个无参数构造函数,否则 SDK 将无法实例化您的类。

  • 我将您的方法注释getuHistory()为从数据库中排除,否则 SDK 也会编写一个uHistory属性。


查看完整回答
反对 回复 2022-05-12
  • 1 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号