如何在id

时间:2019-01-18 13:10:41

标签: java firebase-realtime-database

我正在检索id下的许多值,但是它不起作用。它应该很容易,但是我被卡住了。

这是我的数据结构:

Attendance
    x73aXTQHXHXHQ 
        current
          value: "Bill Gates"
        company
          value: "Apple"
        history
            -La7wew7hdxccdcdzssf
                   value: 156000000001
            -La7wptthd3ceeqoz34f
                   value: 156000000002
            -La7wew7hdxccdcdzssf
                   value: 156000000003

我已经尝试过此代码,并且仅成功获取了子计数Output: 3,但没有像我想要的那样子值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 个答案:

答案 0 :(得分:0)

由于您没有分享您的- name: Capture files to delete find: paths: /path/to/directory file_type: file excludes: - "myfirst.file" - "mysecond.file" register: found_files - name: Delete files file: path: "{{ item.path }}" state: absent with_items: "{{ found_files['files'] }}" ,所以我无法说出那里出了什么问题。但是要打印历史记录中的值:

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; } } 字段是公共的,因此SDK会将其识别为与JSON中的value属性匹配。
  • 我添加了一个无参数的构造函数,因为否则,SDK将无法实例化您的类。
  • 我注释了您的value方法要从数据库中排除,因为否则SDK也会写一个getuHistory()属性。