如何在id下检索许多值

我正在检索 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;

    }

}


慕雪6442864
浏览 143回答 1
1回答

Cats萌萌

既然你没有分享你的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属性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java