我遇到問題。該表etd
包含Etudiant
類型的對象,但我不能出聽者的這些對象返回:從Firebase中的valueEventListener返回值
ValueEventListener valueEventListener = mref.addValueEventListener(new ValueEventListener() {
Etudiant etud = new Etudiant();
public Etudiant getEtud() {
return etud;
}
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int i = 0;
Groupe groupe = new Groupe();
Object[] objTab = new Object[100];
// Toast.makeText(MainActivity.this,String.valueOf(tabdesobjet(objTab,Groupe.class,dataSnapshot,i)),Toast.LENGTH_LONG).show();
int j = 0;
for (DataSnapshot map: dataSnapshot.getChildren()) {
if (!map.getKey().equals("id") && !map.getKey().equals("idCycle") && !map.getKey().equals("idFilliere") && !map.getKey().equals("idPromo") && !map.getKey().equals("idSection") && !map.getKey().equals("nbEtudiants") && !map.getKey().equals("designation")) {
objTab[i] = map.getValue();
i++;
}
}
Etudiant[] etd = new Etudiant[i];
for (j = 0; j < i; j++) {
HashMap < String, Object > hashMap = (HashMap < String, Object >) objTab[j];
etd[j] = new Etudiant();
etd[j].setAttributs(hashMap);
}
Log.v("Test", "Etudiant = " + etd[0].getNom());
etud = etd[0];
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
請告訴我們你的意思是你所不能返回的對象了聽者。你是否收到彙編問題?或運行時問題? – Rob
數據是從Firebase數據庫異步加載的。當你試圖返回一個值時,'onDataChange'中的代碼還沒有運行。而不是試圖返回一個值,將代碼*使用*值*轉換爲*'onDataChange'。請參閱http://stackoverflow.com/questions/41372562/returning-a-value-in-firebase-ondatachange –
謝謝,但我的程序太大,它是一個真正的應用程序,我被封鎖,幫助我。 – hichem