【问题标题】:How to retrieve a list of all values in Firebase?如何检索 Firebase 中所有值的列表?
【发布时间】:2017-03-26 11:06:25
【问题描述】:

我正在使用 Firebase 开发一个 Android 应用程序。我需要将下面树中的所有值放入ArrayList。但我收到NullPointerException。我在下面展示了我的数据库和代码。请帮帮我。 与How to Retrieve a List object from the firebase in android中的问题不同 我正在尝试 retreive3 字符串列表而不是对象。我找不到任何例子。

代码如下:

brandRef=FirebaseDatabase.getInstance().getReferenceFromUrl("https://stockmanager-142503.firebaseio.com/Brands ");
brandRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds: dataSnapshot.getChildren())
            allBrands.add(ds.getValue(String.class));
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

对数据库的引用工作正常。我可以毫无困难地添加值。

这是我得到的错误:

FATAL EXCEPTION: main java.lang.NullPointerException at com.strokx.user.stockmanager.AddItemFragment$2.onDataChange(AddItemFragment.java:93)
                                                                                at com.google.android.gms.internal.zzakg.zza(Unknown Source)
                                                                                at com.google.android.gms.internal.zzalg.zzcxk(Unknown Source)
                                                                                at com.google.android.gms.internal.zzalj$1.run(Unknown Source)
                                                                                at android.os.Handler.handleCallback(Handler.java:605)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                                at android.os.Looper.loop(Looper.java:137)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:4517)
                                                                                at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
                                                                                at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

    标签: android arraylist firebase firebase-realtime-database


    【解决方案1】:

    在您的回调中(假设您想获取person 属性):

    brandRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds: dataSnapshot.getChildren()) {
    
               MeetingUser person = ds.getValue(Person.class);
    
               String id = person.getId();
               String name= person.getName();
    
               // Then add the value you require to add in your ArrayList
               allBrands.add(name);
           }
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {
    
        }
    });
    

    【讨论】:

      【解决方案2】:

      getKey() 函数在这里是合适的。

      brandRef=FirebaseDatabase.getInstance().getReferenceFromUrl("https://stockmanager-142503.firebaseio.com/Brands ");
      brandRef.addValueEventListener(new ValueEventListener() {
          @Override
          public void onDataChange(DataSnapshot dataSnapshot) {
              for(DataSnapshot ds: dataSnapshot.getChildren())
                  allBrands.add(ds.getKey());
          }
      
          @Override
          public void onCancelled(DatabaseError databaseError) {
      
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-26
        • 2018-04-08
        • 1970-01-01
        • 2021-11-21
        • 2019-07-18
        • 1970-01-01
        • 2011-10-04
        • 1970-01-01
        相关资源
        最近更新 更多