【发布时间】:2021-04-12 10:01:50
【问题描述】:
我正在尝试将 Firebase 实时数据库中的数据检索到名为“joueur”的表中,但出现以下错误:
com.google.firebase.database.DatabaseException: E/AndroidRuntime: FATAL EXCEPTION: main 进程:com.example.florian.fichiertexteandbddtest1,PID:899 com.google.firebase.database.DatabaseException:无法将 java.util.ArrayList 类型的对象转换为 com.example.florian.fichiertexteandbddtest1.Joueur 类型的对象
我的 Firebase 实时数据库是这个:firebase realtime database
我试图在表 Joueurs 的子项中获取 joueurs 的值
这是我检索数据并将其添加到表中的代码:
int i;
for (i=0;i<150;i++) {
firebaseReference2.child(String.valueOf(i));
firebaseReference2.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
List<String> keys = new ArrayList<>();
for (DataSnapshot keyNode : snapshot.getChildren()) {
keys.add(keyNode.getKey());
Joueur joueur = keyNode.getValue(Joueur.class);
databaseHelper.addJoueur(joueur.getNom_joueur(), joueur.getPrenom_joueur(), joueur.getNum_licence_joueur(), joueur.getId_equipe_joueur());
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(EquipeActivity.this, error.toString(), Toast.LENGTH_SHORT).show();
}
});
}
错误在 Joueur joueur = keyNode.getValue(Joueur.class);
还有我的 Joueur 课程: `public class Joueur 实现 Serializable {
private String nom_joueur;
private String prenom_joueur;
private int num_licence_joueur;
private int id_equipe_joueur;
private int id;
public Joueur() {
}
public Joueur(String nom_joueur, String prenom_joueur, int num_licence_joueur, int id_equipe_joueur, int id) {
this.nom_joueur = nom_joueur;
this.prenom_joueur = prenom_joueur;
this.num_licence_joueur = num_licence_joueur;
this.id_equipe_joueur = id_equipe_joueur;
this.id = id;
}
public String getNom_joueur() {
return nom_joueur;
}
public void setNom_joueur(String nom_joueur) {
this.nom_joueur = nom_joueur;
}
public String getPrenom_joueur() {
return prenom_joueur;
}
public void setPrenom_joueur(String prenom_joueur) {
this.prenom_joueur = prenom_joueur;
}
public int getNum_licence_joueur() {
return num_licence_joueur;
}
public void setNum_licence_joueur(int num_licence_joueur) {
this.num_licence_joueur = num_licence_joueur;
}
public int getId_equipe_joueur() {
return id_equipe_joueur;
}
public void setId_equipe_joueur(int id_equipe_joueur) {
this.id_equipe_joueur = id_equipe_joueur;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}`
谢谢!
【问题讨论】:
-
你的“firebaseReference2”对象是如何定义的?
-
我是这样定义的:firebaseReference2 = firebaseDatabase.getReference().child("Joueurs");所以它会从 Joueurs 表中读取数据
-
而且你想获取
Joueurs节点下存在的数据以及所有子节点,对吧? -
只从子节点,我只想获取创建播放器需要的数据,所以id_equipe_joueur, nom_joueur, prenom_joueur, num_licence_joueur
-
好的,我马上给你写答案。
标签: java android firebase firebase-realtime-database