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

Posted

技术标签:

【中文标题】如何从firebase检索多个数据到android中的列表视图?【英文标题】:How to retrieve multiple data from firebase to List View in android? 【发布时间】:2020-08-18 21:54:53 【问题描述】:

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

[![Firebase 数据][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());
    
);

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

【问题讨论】:

这段代码中到底有什么不符合您的预期? 如果您能指出您的代码中的哪些内容有效,哪些无效,您会收到什么错误消息,这将非常有帮助? 检索到的数据被覆盖,它只显示最后一个“随机firebase push key”中的所有数据 【参考方案1】:

是的。可以。很简单。像这样创建一个类:

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;

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

然后你的 valueEvent 监听器中的这个类是这样的:

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

既然您想在 ListView 中显示它,请在您的 valueEventListener 中使用类似这样的内容:

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 

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

myRef.child("key").setValue(data);  //data = object of class YourClass

【讨论】:

以上是关于如何从firebase检索多个数据到android中的列表视图?的主要内容,如果未能解决你的问题,请参考以下文章

从多个孩子 Android Firebase 中检索同一个孩子

从firebase检索数据到android

如何使用随机键从 Firebase 数据库中检索子项到 Android 的回收站视图中?

如何根据 android 中的用户位置从 Firebase 数据库中检索数据?

如何从firebase数据库检索经度和经度到android地图应用程序

如何从 Real-time Firebase 检索使用 Geofire 设置的多个位置并在 Android Studio 的地图上显示它们?