猿问

问题检索 firebase 的类似子元素

我只想一次检索日期和所有日期元素,并将它们存储在 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) {


        }

    });

}

请帮助找到解决方案。


精慕HU
浏览 209回答 2
2回答

慕少森

访问您所获取数据的顺序是不正确的。如果没有其他帮助,您可以尝试这种方式。DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();rootRef.child("Names").orderByChild("Date").addValueEventListener(new ValueEventListener() {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onDataChange(@NonNull DataSnapshot dataSnapshot) {&nbsp; &nbsp; &nbsp; &nbsp;for(DataSnapshot ds: dataSnapshot.getChildren()){&nbsp; &nbsp; &nbsp; &nbsp; date.add(ds.getValue(String.class));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onCancelled(@NonNull DatabaseError databaseError) {&nbsp; &nbsp; }});//Also as you've told that code is not working, please tell, what exactly is not working

白衣非少年

firebase 引用错误,您应该从顶部节点转到日期节点。改变这个:firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Date");进入这个:firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Name");&nbsp;firebaseDatabase.addValueEventListener(new ValueEventListener() {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onDataChange(@NonNull DataSnapshot dataSnapshot) {&nbsp; &nbsp; &nbsp; &nbsp;for(DataSnapshot datas: dataSnapshot.getChildren()){&nbsp; &nbsp; &nbsp; &nbsp; date.add(datas.child("Date").getValue().toString());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onCancelled(@NonNull DatabaseError databaseError) {&nbsp; &nbsp; }});由于您想获取所有内容, Date因此将 firebase 引用放在节点上Name并在名称中循环,以便能够检索所有日期。如果要获取某个用户示例的日期Ravi,则不需要循环,可以执行以下操作:firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Name").child("Ravi").child("Date");firebaseDatabase.addValueEventListener(new ValueEventListener() {@Overridepublic void onDataChange(@NonNull DataSnapshot dataSnapshot) {&nbsp; &nbsp; date.add(dataSnapshot.getValue().toString());&nbsp; &nbsp; &nbsp; &nbsp;}}@Overridepublic void onCancelled(@NonNull DatabaseError databaseError) {&nbsp; &nbsp; }&nbsp;});
随时随地看视频慕课网APP

相关分类

Java
我要回答