如何在android中从firebase到列表视图检索多个数据?
我想在android studio中检索所有这些数据到ListView,这可能吗? 这容易做吗?我是代码开发新手 [![Firebase数据][1][1] 我正在使用addValueEventListener检索数据:如何在android中从firebase到列表视图检索多个数据?,android,firebase,listview,firebase-realtime-database,Android,Firebase,Listview,Firebase Realtime Database,我想在android studio中检索所有这些数据到ListView,这可能吗? 这容易做吗?我是代码开发新手 [![Firebase数据][1][1] 我正在使用addValueEventListener检索数据: reff2 = database.getInstance().getReference().child("Registo Inicial e Final"); reff2.addValueEventListener(new ValueEventListene
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());
}
});
这就是我得到的:
我需要来自不同节点的所有数据,我不知道为什么会覆盖数据。是。你可以,很简单。创建如下所示的类:
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;
}
YourClass data = ds.getValue(YourClass.class);
记住:如果您使用的是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;
}
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按键的所有数据