2016-07-21 6 views
8

meine Datenbank zu füllen, wie dies angeordnet:Wie eine String-Liste von Firebase bekommt einen Spinner

enter image description here

ich alle Werte von areaname als String-Liste oder irgendeiner Form erhalten möge von Liste und verwenden Sie es, um einen Spinner zu füllen. Das Problem, das ich bekomme, ist, dass es nur den letzten Wert (in diesem Fall "New York") abruft. Dies ist meine eigentliche Code:

fDatabaseRoot.child("areas").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) { 
       String areaName = areaSnapshot.child("areaName").getValue(String.class); 

       Spinner areaSpinner = (Spinner) findViewById(R.id.spinner); 
       final String[] areas = {areaName}; 
       ArrayAdapter<String> areasAdapter = new ArrayAdapter<String>(UAdminActivity.this, android.R.layout.simple_spinner_item, areas); 
       areasAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       areaSpinner.setAdapter(areasAdapter); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
+0

Was ist fDatabaseRoot.child hier? Könnte ich sehen, wie es initialisiert wird? – Smac

Antwort

15

ich nicht testen, dass Code, sondern mehr oder weniger, das ist, was Sie tun müssen:

fDatabaseRoot.child("areas").addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     // Is better to use a List, because you don't know the size 
     // of the iterator returned by dataSnapshot.getChildren() to 
     // initialize the array 
     final List<String> areas = new ArrayList<String>(); 

     for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) { 
      String areaName = areaSnapshot.child("areaName").getValue(String.class); 
      areas.add(areaName); 
     } 

     Spinner areaSpinner = (Spinner) findViewById(R.id.spinner); 
     ArrayAdapter<String> areasAdapter = new ArrayAdapter<String>(UAdminActivity.this, android.R.layout.simple_spinner_item, areas); 
     areasAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     areaSpinner.setAdapter(areasAdapter); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

Ich hoffe, dass es hilft!

Grüße.

+0

Und es hat wunderbar geholfen! Genau das, was ich wollte, mein Bruder, vielen Dank !! : D –

+0

Gibt es mehr Code dazu? Ich versuche, dieses Beispiel zu finden, um es in meiner eigenen Anwendung zu verwenden, und ich bekomme Formatierungsfehler – Smac