Android’te Firebase veritabanındaki bilgiyi Spinner’e çekerek nasıl gösterebiliriz?

Bu bilgileri ProgrammingWizards Youtube kanalındaki şu videodan izleyerek öğrendim. Kendilerine teşekkür ederim.

Daha önceden Firebase veritabanına bilgi nasıl yazılır burada öğrenmiştik. O dersin üzerine devam ediyoruz.

Verilerin gösterileceği Spinner nesnemizi layout’umuza ekliyoruz.

<Spinner
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/sp"
             />

FirebaseHelper.java isimli bir dosya oluşturarak aşağıdaki şekilde dolduruyoruz.

import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseException;
import com.google.firebase.database.DatabaseReference;

import java.util.ArrayList;

import tr.com.ahmetcevahircinar.berberim.model.ChatMessage;

public class FirebaseHelper {
    DatabaseReference db;
    Boolean saved = null;

    public FirebaseHelper(DatabaseReference db) {
        this.db = db;
    }

    public Boolean save(ChatMessage chatMessage) {

        if (chatMessage == null) {
            saved = false;
        } else {
            try {
                db.child("Chat").push().setValue(chatMessage);
            } catch (DatabaseException e) {
                e.printStackTrace();
                saved = false;
            }
        }

        return saved;
    }

    public ArrayList<String> retrieve() {
        final ArrayList<String> message = new ArrayList<>();

        db.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                fetchData(dataSnapshot,message);
            }
            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                fetchData(dataSnapshot,message);

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
        return message;
    }

    private void fetchData(DataSnapshot snapshot,ArrayList<String> message){
        message.clear();
        for(DataSnapshot ds:snapshot.getChildren()){
            String mesaj=ds.getValue(ChatMessage.class).getMessage();
            message.add(mesaj);
        }


    }
}

Activity’imizin en üstüne;

 DatabaseReference db;
    FirebaseHelper helper;

şeklinde tanımları yaptıktan sonra;

onCreate metodu içerisine:

Spinner sp= (Spinner) findViewById(R.id.sp);
        db= FirebaseDatabase.getInstance().getReference();
        helper=new FirebaseHelper(db);
        sp.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,helper.retrieve()));

kodlarını yazarak yazılan mesajların Spinner’e aktarılmasını sağlıyoruz.

spinner-firebase

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir