如何从Firebase到Android中的列表视图检索多个数据?

时间:2020-05-04 13:01:15

标签: android firebase listview firebase-realtime-database

我想将所有这些数据检索到android studio中的ListView,这可能吗? 这很容易做到吗?我是代码开发的新手。

[![Firebase Data] [1]] [1]

我正在使用“ addValueEventListener”来检索数据:

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("MATRICULAA", String.valueOf(ds.child("matricula").getValue()));


               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();

               Log.e("KM", String.valueOf(ds.child("km_FINAL").getValue()));

               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);
           }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        
        Log.e("The read failed: " ,databaseError.getMessage());
    }
});

这就是我得到的: 我想要所有来自不同节点的数据,我不知道为什么它会覆盖数据。

1 个答案:

答案 0 :(得分:1)

是的。可以,这很容易。创建一个这样的类:

df.join(df.groupby('ID').filter(lambda x: len(x)>1).groupby('ID').head(1).assign(X='T').X, how='left')

请记住:如果使用的是getter和setter,则它们必须是公共的,否则变量必须是公共的。首选使用getter和setter方法。

然后在您的valueEvent侦听器中使用以下类:

public class YourClass(){
    public String cod_PROJETO;
    public String data_FIM; 
    .... /// All or required data items here


    // no argument constructor
    public YourClass(){}


    public String getCod_PROJETO(){
        return cod_PROJETO;
    }

    public void setCod_PROJETO(String cod_PROJETO){
        this.cod_PROJETO = cod_PROJETO;
    }
    .... /// Getters and setters for your data items.
    .... /// Android studio code completion suggestions will make this easier;
}

由于要在ListView中显示它,因此请在valueEventListener中使用类似的内容:

YourClass data = ds.getValue(YourClass.class);

通过这种方式,您还可以在Firebase中设置数据,例如:

yourClassList.clear();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
    YourClass data = ds.getValue(YourClass.class);
    if(data != null)
        yourClassList.add(data);
}
// update your listView adapter here using notifyDataSetChanged