How to get a String List from Firebase to fill a Spinner
22,012
I didn't test that code but, more or less, that is what you have 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) {
}
});
I hope it's helps!
Regards.
![Alex Ardavin](https://i.stack.imgur.com/0CCej.jpg?s=256&g=1)
Author by
Alex Ardavin
Updated on November 21, 2020Comments
-
Alex Ardavin over 3 years
my database is arranged like this:
I want to get all the values from areaName as a String List or any form of list and use it to populate a Spinner. The problem I am getting 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) { } });
-
Alex Ardavin almost 8 yearsAnd it helped wonderfully! Just what I wanted my brother, thank you very very much!! :D
-
Smac almost 7 yearsIs there more code to this? Im trying to figure out this example to use in my own application and Im getting formatting errors
-
abo over 5 years@Javier In the above case Database related codes and UI codes are coupled. Wouldn't that is bad practice?