如何从Android Firebase实时数据库中的节点检索所有数据?

时间:2020-04-23 15:49:02

标签: java android firebase firebase-realtime-database

这是我的Firebase数据:

[![在此处输入图片描述] [1]] [1]

我想从child(“ Registo Inicial e Final”)中检索所有数据,并显示在表格或列表视图中。

我来自android studio的代码:

reff2 = database.getInstance().getReference().child("Registo Inicial e Final");

            reff2.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange( DataSnapshot dataSnapshot) {


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

                        Log.e("MATRICULAAAAAAAAAAAAA", String.valueOf(ds.child("matricula").getValue()));


                        try {


                            if (ds.child("matricula").getValue().equals(editText_Matric.getText().toString())) {

                                String message = ds.child("nome_CONDUTOR").getValue().toString();
                                String message2 = ds.child("matricula").getValue().toString();
                                String message3 = ds.child("cod_PROJETO").getValue().toString();
                                String message4 = ds.child("km_INICIAL").getValue().toString();
                                String message5 = ds.child("km_FINAL").getValue().toString();
                                String message6 = ds.child("data_INICIO").getValue().toString();
                                String message7 = ds.child("data_FIM").getValue().toString();
                                String message8 = ds.child("hora_INICIO").getValue().toString();
                                String message9 = ds.child("hora_FIM").getValue().toString();
                                String message10 = ds.child("observacoes").getValue().toString();

                                Nome.setText(message);
                                Matricula.setText(message2);
                                Cod.setText(message3);
                                Kilometros_inicial.setText(message4);
                                Kilometros_final.setText(message5);
                                Data_inicial.setText(message6);
                                Data_final.setText(message7);
                                Hora_inicial.setText(message8);
                                Hora_final.setText(message9);
                                Observacoes.setText(message10);

输出:

它仅显示来自一条记录(仅来自一个Firebase按钮)的数据,但是我希望来自所有按钮的所有数据。

[![在此处输入图片描述] [2]] [2]

2 个答案:

答案 0 :(得分:0)

您未读取所有数据,因为您指定了if-statement来仅获取在matricula中键入的相应EditText字符串的数据:

删除此if-statement

if (ds.child("matricula").getValue().equals(editText_Matric.getText().toString())) {

......
.....

您将获得所有值,然后将它们存储在list

答案 1 :(得分:0)

发生的事情是,您将获得所有子代的完整快照,然后您的语句if (ds.child("matricula").getValue().equals(editText_Matric.getText().toString()))会过滤掉所有其他子代,除非matricula等于{{ 1}}。在屏幕快照中,它显示您的editText_Matric文本值为“ 90-29-VE”,因此您只为Miguel Carvalho得到了一个结果。

相关问题