【问题标题】:I am fetching data from Firebase Realtime database but I get null object我正在从 Firebase 实时数据库中获取数据,但我得到空对象
【发布时间】:2021-04-25 18:08:17
【问题描述】:

我正在使用 Firebase 实时数据库开发一个 android 应用程序。但我每次都得到空对象。我在静态对象中获得价值,在扩展应用程序类的通用类中声明和初始化;

  1. 这是我的数据库结构

  1. 这是我获取数据的代码

        void getLicRequest(String iid)
                {
                    DatabaseReference ref= FirebaseDatabase.getInstance().getReference("LicenseUpRequests");
                    Query qu=ref.orderByChild("id").equalTo(iid);
                    qu.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
                            Commons k=(Commons)getApplicationContext();
                            k.licRequest=snapshot.getValue(LicenseModel.class);
                        }
    
                        @Override
                        public void onCancelled(@NonNull DatabaseError error) {
    
                        }
                    });
                }
        ```
    
    
    
    
  2. 这是我的模型类

     public class LicenseModel {
            public String frontSide;
            public String backSide;
            public String id;
            public String date;
    
            public String getFrontSide() {
                return frontSide;
            }
    
            public void setFrontSide(String frontSide) {
                this.frontSide = frontSide;
            }
    
            public String getBackSide() {
                return backSide;
            }
    
            public void setBackSide(String backSide) {
                this.backSide = backSide;
            }
    
            public String getId() {
                return id;
            }
    
            public void setId(String id) {
                this.id = id;
            }
    
            public String getDate() {
                return date;
            }
    
            public void setDate(String date) {
                this.date = date;
            }
        }
        ```
    

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    当您对 Firebase 数据库执行查询时,可能会有多个结果。所以快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果列表。

    您的onDataChange 需要通过循环snapshot.getChildren() 来浏览此列表:

    qu.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            Commons k=(Commons)getApplicationContext();
            for (DataSnapshot requestSnapshot: snapshot.getChildren()) {
                k.licRequest=requestSnapshot.getValue(LicenseModel.class);
            }
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            throw error.toException(); // Never ignore errors
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2018-06-08
      • 1970-01-01
      • 2020-10-15
      • 2022-08-17
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多