How to get a list of strings from Firebase to populate Spinner

my database is structured like this:

enter image description here

I want to get all the values ​​from areaName as a list of strings or any form of a list and use it to populate Spinner. The problem I get is that it only retrieves the last value (in this case, “New York”). This is my actual 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) { } }); 
+8
android arrays firebase firebase-database spinner
source share
1 answer

I am not testing this code, but, more or less, this is what you need to do:

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

Hope this helps!

Sincerely.

+16
source share

All Articles