Reputation: 33
I'm new to Firebase. I want to add Firebase data to my spinner. I followed this answer How to get a String List from Firebase to fill a Spinner but my spinner doesn't receive anything.
This is my code:
//Value event listener for realtime data update
ref.child("Tabela-Consulta").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
final List<String> nomeConsulta = new ArrayList<String>();
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
//Getting the data from snapshot
TabelaConsulta consultaName = postSnapshot.child("nomeconsulta").getValue(TabelaConsulta.class);
nomeConsulta.add(consultaName.getConsultanome());
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, nomeConsulta);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
My data model:
public class TabelaConsulta {
private String consultanome;
public TabelaConsulta(){
}
public String getConsultanome() {
return consultanome;
}
public void setConsultanome(String consultanome){
this.consultanome = consultanome;
}
}
Thanks
Upvotes: 1
Views: 7588
Reputation: 21
Try this:
myRef.child("Tabela-Consulta").child("nomeconsulta").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final List<String> nomeConsulta = new ArrayList<String>();
for (DataSnapshot areaSnapshot : dataSnapshot.getChildren()) {
String consultaName = areaSnapshot.getValue(String.class);
nomeConsulta.add(consultaName);
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(YOUR_ACTIVITY.this, android.R.layout.simple_spinner_item, nomeConsulta);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(skularAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Remember to define your firebase reference:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("YOUR_REFERENCE");
And define your spinner:
Spinner spinner = (Spinner) findViewById(YOUR_SPINNER);
Also make make your database look like this:
By adding your values like this:
Put your values in " "
and then close everything with []
.
Hope it helps!
Upvotes: 2
Reputation: 379
Please follow below
Firebase Url :https://example-id:firebaseio.com/Tabela-Consulta
MainActivity.java
:
public class MainActivity extends Activity {
private List<String> nomeConsulta = new ArrayList<String>();
private ArrayAdapter<String> dataAdapter;
private DatabaseReference mDatabaseReference;
private Spinner mSpinner
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dataAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, nomeConsulta);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner = (Spinner)findViewById(R.id.your_reference_spinner);
mSpinner.setAdapter(dataAdapter);
mDatabaseReference = FirebaseDatabase.getInstance().getReference();
mDatabaseReference.child("Tabela-Consulta").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot: snapshot.getChildren()) {
TabelaConsulta data = snapshot.getValue(TabelaConsulta.class);
nomeConsulta.add(data.getConsultanome());
}
dataAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
Upvotes: 0