【问题标题】:How to retrieve all data from nested nodes in firebase database如何从firebase数据库中的嵌套节点检索所有数据
【发布时间】:2017-05-09 23:47:57
【问题描述】:

我想从我的数据库中获取所有值。但问题是我无法使数据库引用正确或数据快照的 for 循环以获取所有值。结果始终为空且没有错误。 这是我的代码:

      databaseReports.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            reportList.clear();

            for(DataSnapshot userSnapshot : dataSnapshot.getChildren()){
                Reports reports = userSnapshot.getValue(Reports.class);
                reportList.add(reports);
            }
            ReportList adapter = new ReportList(ViewReports.this, reportList);
            listViewReports.setAdapter(adapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }

我想获取所有日期节点的值。 这是我的数据库参考

    FirebaseDatabase.getInstance().getReference("REPORTS")

由于引用而使用此生成和空列表。

    databaseReports = FirebaseDatabase.getInstance().getReference("REPORTS/05-10-2017");

但是这个只显示05-10-2017下的数据

请帮我从 REPORTS.TIA 下的子节点获取所有数据

【问题讨论】:

标签: android firebase firebase-realtime-database


【解决方案1】:

你可以试试这个……

databaseReports.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            reportList.clear();

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

                Log.d("ymdSnapshot", ymdSnapshot.getKey().toString());

                for(DataSnapshot repSnapshot : ymdSnapshot.getChildren()){
                    Reports reports = repSnapshot.getValue(Reports.class);
                    reportList.add(reports);
                }
            }
            ReportList adapter = new ReportList(ViewReports.this, reportList);
            listViewReports.setAdapter(adapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
}

你可以试试这个...第二部分

databaseReports.child("05-09-2017").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            reportList.clear();

            for(DataSnapshot repSnapshot : dataSnapshot.getChildren()){
                    Reports reports = repSnapshot.getValue(Reports.class);
                    reportList.add(reports);
            }

            ReportList adapter = new ReportList(ViewReports.this, reportList);
            listViewReports.setAdapter(adapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
}

【讨论】:

  • 3et,感谢他的工作。再次感谢您的帮助。还有一件事,如果我只想获得一个特定的 ymd 节点怎么办?
猜你喜欢
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2021-12-28
  • 1970-01-01
  • 2019-02-07
  • 2017-02-12
相关资源
最近更新 更多