1

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.

Este é o meu node no firebase

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

Nikhil Gangai
  • 125
  • 3
  • 7
Eudes Inácio
  • 33
  • 2
  • 9
  • Can you provide your data model. What does `consultaName.getConsultanome()` supposed to return. Spinner code looks ok. – Dibzmania Jan 25 '17 at 12:26
  • I updated my question – Eudes Inácio Jan 25 '17 at 12:34
  • Your current model can only have one consultant name. Why do you even want a spinner ? If you want to store an array of consultants, then you need to correct your data model. Also Don't create an adapter on every callback. Modify the data in the adapter in the adapter instead – Dibzmania Jan 25 '17 at 12:47
  • ok. Modify how? can you help me? – Eudes Inácio Jan 25 '17 at 13:05

2 Answers2

2

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:

Something

By adding your values like this:

Something_more

Put your values in " " and then close everything with [] .

Hope it helps!

Kjell Ove
  • 21
  • 1
  • 10
0

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

            }
        });

    }