如何从Firebase运行时数据库获取特定的子键,以及如何在recyclerview android

时间:2019-06-05 09:55:44

标签: android firebase firebase-realtime-database android-recyclerview

我有一个包含Firebase运行时数据库所有键的DataSnapshot。这是我的日志:-

  

E / MYDATA:DataSnapshot {键=收入,值= {-LgaZl_ojnqmvgpPe48D = {date = 2019-06-05,createdAt = 2019-06-05 13:08:22,金额= 333.00,标题= jjhj,从= yyyyy,时间= 13:08,类型= ICICI银行,更新时间为= 2019-06-05 13:08:22}}}

     

E / MYDATA:DataSnapshot {键= createdAt,值= 2019-06-05 11:06:18}

     

E / MYDATA:DataSnapshot {键=电子邮件,值= abc@gmail.com}

在这里,我的日志是= MYDATA,我尝试在Recyclerview中呈现 key = Income 数据

这是我的代码:

  String id = FirebaseAuth.getInstance().getCurrentUser().getUid();

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(id);

    ref.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            Log.e("MYDATA", "" + dataSnapshot);

        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

这是我的数据库结构:-

数据库图片

enter image description here

Look this image

1 个答案:

答案 0 :(得分:2)

如果要获取“扩展”的记录,请将ref更改为

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(id).child("Expanse");

更改后,将ValueEventListenerChildEventListener添加到ref

您已使用ChildEventListener,因此在onChildAdded的{​​{1}}中,您可以像这样从Firebase获取数据,

ChildEventListener

上面的代码将出现在Expanse expanse = dataSnapshot.getValue(Expanse.class); list.add(expanse); 的{​​{1}}中,其中onChildAdded是您的POJO类,其中包含用于数量,标题,日期等的获取器和设置器。

然后,您必须在ChildEventListener中添加这个新获得的对象Expanse,然后通知expanse数据已更改。