2016-07-21 40 views
8

moja baza danych jest umieszczona tak:Jak uzyskać listę String z Firebase wypełnić Spinner

enter image description here

Chcę uzyskać wszystkie wartości z areaName jako Lista String lub jakiejkolwiek formy listę i użyj go do wypełnienia Spinner. Problemem jest to, że pobiera tylko ostatnią wartość (w tym przypadku "Nowy Jork"). To jest mój rzeczywisty kod:

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

Co to jest fDatabaseRoot.child tutaj? Czy mogę zobaczyć, jak został zainicjowany? – Smac

Odpowiedz

15

Nie przetestować ten kod, ale mniej więcej to, co trzeba zrobić:

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

    } 
}); 

Mam nadzieję, że to pomaga!

Pozdrawiam.

+0

I to pomogło cudownie! Właśnie tego chciałem mojego brata, bardzo dziękuję !! : D –

+0

Czy jest więcej kodu do tego? Próbuję znaleźć ten przykład do użycia we własnej aplikacji i otrzymuję błędy formatowania – Smac