Android Firebase Veritabanı Okuma ve Yazma

Sizlere bu örneğimde, Firebase Veritabanına Veri Ekleme ve Verileri Listeleme örnek çalışmaya değineceğim. Yararlı Olması dileklerimle...

Yeni bir çalışma açıp ve MainActivity içerisine btnEkle ve btnListele isimlerinde iki adet buton oluşturuyorum.

activity_main.xml kaynak kodları aşağıdaki gibidir;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.serifgungor.firebasedatabase.Activity.MainActivity"> <Button
android:id="@+id/btnEkle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginTop="25dp"
android:text="Ekle" /> <Button
android:id="@+id/btnListele"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/btnEkle"
android:layout_marginTop="30dp"
android:text="Listele" /> </RelativeLayout>

MainActivity class'ında ise kodlarım şu şekilde; (Kayıt ve Listeleme amacıyla KayitActivity ve ListeleActivity sayfalarıma yönlendiriyorum)

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase; public class MainActivity extends AppCompatActivity { Button btnEkle,btnListele; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnEkle = (Button)findViewById(R.id.btnEkle); btnListele = (Button)findViewById(R.id.btnListele); btnEkle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,KayitActivity.class));
}
}); btnListele.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,ListeleActivity.class));
}
}); } }

Model üretimiyle başlıyoruz, Projeniz içerisine Model paketi oluşturup User isminde class oluşturunuz. (Kapsülleme yapınız);

public class User {
	private String email;
	private String sifre;
	private String ad;
	private String soyad;

	public User(){}
	public User(String email, String sifre, String ad, String soyad) {
this.email = email;
this.sifre = sifre;
this.ad = ad;
this.soyad = soyad;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public String getSifre() {
return sifre;
} public void setSifre(String sifre) {
this.sifre = sifre;
} public String getAd() {
return ad;
} public void setAd(String ad) {
this.ad = ad;
} public String getSoyad() {
return soyad;
} public void setSoyad(String soyad) {
this.soyad = soyad;
} }

KayitActivity.java için kodlarımız (Layout kısmını paylaşmıyorum);

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.serifgungor.firebasedatabase.R;
import com.serifgungor.firebasedatabase.Model.User; public class KayitActivity extends AppCompatActivity { EditText etEmail,etSifre,etAd,etSoyad; Button btnKayit; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_kayit); btnKayit = (Button)findViewById(R.id.btnUyeKaydet);
etEmail = (EditText)findViewById(R.id.etEmail);
etSifre = (EditText)findViewById(R.id.etPassword);
etAd = (EditText)findViewById(R.id.etAd);
etSoyad = (EditText)findViewById(R.id.etSoyad); btnKayit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference().child("users"); dbRef.push().setValue( new User(
etEmail.getText().toString(),
etSifre.getText().toString(),
etAd.getText().toString(),
etSoyad.getText().toString()
) );

finish(); } }); } }

Burada DatabaseReference sayesinde, users isimli tabloya veri ekleme işlemi yapıyoruz. users tablosu yoksa sistem ilgili tabloyu kendisi eklemektedir. İlgili tablo kolonları da yine aynı şekilde.

dbRef nesnesi üzerinde bulunan push().setValue() dediğimizde, setValue içerisine object gönderebiliyoruz. Gönderdiğimiz object users isminde oluşturulmuş json'ın elemanı oluyor.

Firebase'in en güzel yanı, bir web service üzerine iki satır kadar kısa şekilde kolay bir kullanımı olan veri ekleme şeklini kavrayabiliyorsunuz.

ListeleActivity.java için kodlarımız (Layout kısmını paylaşmıyorum);

public class ListeleActivity extends AppCompatActivity {
	Button btnUyeleriListele;
GridView gridView;
ArrayList<User> uyeler;
GridAdapter gridAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listele); uyeler = new ArrayList<>();
btnUyeleriListele = (Button) findViewById(R.id.btnUyeleriListele);
gridView = (GridView) findViewById(R.id.gridView);
gridAdapter = new GridAdapter(this, uyeler); btnUyeleriListele.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
gridView.setAdapter(gridAdapter);
}
}); FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference(); myRef.child("users").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot snapshot : dataSnapshot.getChildren()) { User user = snapshot.getValue(User.class); uyeler.add(
new User(
user.getEmail(),
user.getSifre(),
user.getAd(),
user.getSoyad(),
user.getResim()
)
); } } @Override public void onCancelled(DatabaseError databaseError) {} }); } }

Listeleme kısmında myRef.child().addValueEventListener oluşturup, onDataChange metodu içerisinde argüman olarak bulunan DataShapshot bize ilgili tablodaki satırları dönmeyi sağlamaktadır.

Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın