如何从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 的回收站视图中?
如何根据 android 中的用户位置从 Firebase 数据库中检索数据?
如何从firebase数据库检索经度和经度到android地图应用程序
如何从 Real-time Firebase 检索使用 Geofire 设置的多个位置并在 Android Studio 的地图上显示它们?