2017-04-05 2 views
0

문제가 있습니다. 표 etd 유형 Etudiant의 객체를 포함하지만 난 리스너에서 이러한 개체를 반환 할 수 없습니다Firebase에서 valueEventListenener의 값을 반환 함

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) { 

    } 
}); 
+0

같은 것을 사용할 수 있습니다. 편집 문제가 있습니까? 또는 런타임 문제? – Rob

+0

데이터가 Firebase 데이터베이스에서 비동기 적으로로드됩니다. 값을 반환하려고 할 때,'onDataChange'의 코드는 아직 실행되지 않았습니다. 값을 반환하려고하는 대신 * onDataChange에 * 값 *을 사용하는 코드를 이동합니다. http://stackoverflow.com/questions/41372562/returning-a-value-in-firebase-ondatachange –

+0

감사합니다.하지만 내 프로그램이 너무 커서 실제 응용 프로그램이므로 차단되었습니다. 도와주세요. – hichem

답변

0

먼저 두 번째 난 당신이 원하는 것을 얻을하지 않았다, List<Etudiant> 또는 ArrayList<Etudiant> 같은 모음을 사용하는 easyer입니다 정확히

+0

데이터를 가져 와서 내 프로그램에서 사용했습니다. – hichem

0

당신은 당신이 리스너에서 객체를 반환 할 수 없습니다에 의해 당신이 무슨 뜻인지 알려주세요이

ArrayList<Etudiant> etudiantList = new ArrayList<>(); 

void getEtudiantList() { 
    mref.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
       etudiantList.add(snapshot.getKey()); 
      }    
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
} 
관련 문제