为了账号安全,请及时绑定邮箱和手机立即绑定

问题检索 firebase 的类似子元素

问题检索 firebase 的类似子元素

精慕HU 2021-09-03 16:52:09
我只想一次检索日期和所有日期元素,并将它们存储在 Firebase 中的数组中,如下所示。我使用以下代码进行检索但未能成功。    public void showData(View view) {    final ArrayList<String> date = new ArrayList<>();    firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Date");    firebaseDatabase.addValueEventListener(new ValueEventListener() {        @Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            date.add(dataSnapshot.getValue().toString());            display.setText(dataSnapshot.getValue().toString());        }        @Override        public void onCancelled(@NonNull DatabaseError databaseError) {        }    });}请帮助找到解决方案。
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

访问您所获取数据的顺序是不正确的。如果没有其他帮助,您可以尝试这种方式。


DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

rootRef.child("Names").orderByChild("Date").addValueEventListener(new ValueEventListener() {

    @Override

    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

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

        date.add(ds.getValue(String.class));

           }

    }


    @Override

    public void onCancelled(@NonNull DatabaseError databaseError) {


    }

});


//Also as you've told that code is not working, please tell, what exactly is not working


查看完整回答
反对 回复 2021-09-03
?
白衣非少年

TA贡献1155条经验 获得超0个赞

firebase 引用错误,您应该从顶部节点转到日期节点。


改变这个:


firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Date");

进入这个:


firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Name");

 firebaseDatabase.addValueEventListener(new ValueEventListener() {

    @Override

    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

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

        date.add(datas.child("Date").getValue().toString());

           }

    }


    @Override

    public void onCancelled(@NonNull DatabaseError databaseError) {


    }

});

由于您想获取所有内容, Date因此将 firebase 引用放在节点上Name并在名称中循环,以便能够检索所有日期。


如果要获取某个用户示例的日期Ravi,则不需要循环,可以执行以下操作:


firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Name").child("Ravi").child("Date");


firebaseDatabase.addValueEventListener(new ValueEventListener() {

@Override

public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

    date.add(dataSnapshot.getValue().toString());

       }

}


@Override

public void onCancelled(@NonNull DatabaseError databaseError) {


    }

 });


查看完整回答
反对 回复 2021-09-03
  • 2 回答
  • 0 关注
  • 208 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信