Android’de Veri Listesi ile Çalışma
Veri Listesi Ekleme
Çok kullanıcılı uygulamalardaki verileri bir listeye
eklemek için push () metodunun kullanımı tavsiye edilir.. Push () metudu, belirtilen yeni Firebase referansına yeni bir
çocuk eklendiğinde benzersiz bir anahtar üretir. Otomatik
olarak oluşturulan bu tuşları listede bulunan her yeni öğe için kullanarak,
birçok istemci çakışmalar olmadan aynı konuma aynı anda çocuk ekleyebilir.
Push () tarafından üretilen benzersiz anahtar, bir zamana dayalıdır,
bu nedenle liste öğeleri otomatik olarak kronolojik olarak sıralanır.
Çocuğun otomatik oluşturduğu anahtarın değerini
almak veya çocuğa ilişkin verileri ayarlamak için push () yöntemi tarafından
döndürülen verileri kullanabilirsiniz. Bir push ()
referansında getKey () çağrısı, otomatik olarak oluşturulan anahtarın değerini
döndürür.
DatabaseReference'da alt etkinlikleri dinlemek için bir
ChildEventListener kullanılır.
Listener
|
Event callback
|
Typical usage
|
ChildEventListener
|
onChildAdded()
|
Her eklenilen yeni çocukta tektiklenir.
|
onChildChanged()
|
Referans edilen düğümün ve alt düğümlerinde
değişiklik olduğunda tetiklenir.
|
|
onChildRemoved()
|
Silenen çocuklar olursa tetiklenir ve silinen veriyi datasnapshot içine döndürülür.
|
|
onChildMoved()
|
Bu olay, onChildChanged () geri döndürdüğü çocuğun
yeniden sıralanmasına neden olan bir güncelleme tarafından tetiklenir. OrderByChild veya
orderByValue ile verilen verilerle kullanılır.
|
Listen for value events(değerin dinlenmesi)
Bir Listeyi veri okumak için
bir ChildEventListener kullanmanız önerilir, ancak bir Liste başvurusuna bir ValueEventListener eklemenin yararlı olduğu durumlar vardır.
Bir Veri Listesine bir ValueEventListener eklemek, tüm verilerin listesini tek bir DataSnapshot olarak döndürür; böylece, tek tek çocuklara erişmek için döngü
oluşturabilirsiniz.
Sorting and filtering
data(verilen sıralanması ve Filtrelenmesi)
Anahtar, değer veya bir çocuğun
değerine göre sıralanmış verileri almak için Gerçek Zamanlı Veritabanı
Sorgulama sınıfını kullanabilirsiniz. Ayrıca, sıralanmış sonuca belirli sayıda
sonuç veya bir dizi anahtar veya değer filtreleyebilirsiniz.
Method
|
Usage
|
orderByChild()
|
Sonuçları, belirtilen bir alt anahtarın
değerine göre sırala.
|
orderByKey()
|
Sonuçları çocuk anahtarlarıyla sıralayın.
|
orderByValue()
|
Sonuçları çocuk değerlerine göre sırala.
|
Bir kerede yalnızca bir sıralama
yöntemi kullanabilirsiniz. Aynı sorguda bir sıralama yöntemi birden çok kez
çağırılırken bir hata oluşur.
Filtering data(Veri filtreleme)
Verileri filtrelemek için,
sorgu oluştururken limit veya aralık yöntemlerinden herhangi birini bir sipariş
verme yöntemi ile birleştirebilirsiniz.
Method
|
Usage
|
limitToFirst()
|
Sıralı sonuç listesinin
başından dönmek için maksimum öğe sayısını ayarlar..
|
limitToLast()
|
Sıralanan listenin
sondan dönülecek maksimum öğe sayısını belirler.
|
startAt()
|
Seçilen sıralama
yöntemine bağlı olarak belirtilen anahtara veya değere eşit veya daha büyük
öğeleri döndürür.
|
endAt()
|
Seçilen sıralama
yöntemine bağlı olarak belirtilen anahtara veya değere eşit veya daha düşük
öğeleri döndürür.
|
equalTo()
|
Seçilen sıralama
yöntemine bağlı olarak, belirtilen anahtar ya da değere eşit öğeleri geri
getirir..
|
Sıralama bazlı yöntemlerin aksine, birden
fazla limit veya aralık işlevini birleştirebilirsiniz. Örneğin, sonuçları
belirli bir değer aralığı ile sınırlamak için startAt () ve endAt ()
yöntemlerini birleştirebilirsiniz.
Sorgu için yalnızca tek bir eşleşme
olduğunda bile, anlık görüntü hala bir listedir; Sadece tek bir madde içerir.
Maddeye erişmek için sonuç üzerinde döngüye ihtiyaç duyarsınız.
myTopPostsQuery.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) {
//ihtiyaç duyduğumuz döngü for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { // TODO: handle the post } } @Override public void onCancelled(DatabaseError databaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()); // ... } });
Limit the
number of results (Sonuç sayısını sınırla)
Belirli bir geri arama için senkronize edilecek
maksimum çocuk sayısını belirlemek için limitToFirst () ve limitToLast ()
yöntemlerini kullanabilirsiniz. Örneğin, sınırı 100 olarak ayarlamak için
limitToFirst () işlevini kullanırsanız başlangıçta yalnızca 100'e kadar
onChildAdded () geri çağrı alırsınız. Firebase veritabanınızda saklanan 100'den
az öğeniz varsa, her öğe için bir onChildAdded () geri arama tetiklenir.Öğeler değiştikçe, sorguya giren öğeler için onChildAdded ()
geriçıkları ve toplam sayı 100 olarak kalacak şekilde bırakılan öğeler için
onChildRemoved () geri çağrıları alırsınız.
Filter by key
or value(Anahtar yada değerle fitrele)
Sorgular için keyfi başlangıç, bitiş ve eşdeğerlik noktaları
seçmek için startAt (), endAt () ve equalTo () metodlarını kullanabilirsiniz.
How query data is ordered(Sorgu verisi nasıl sıralanır.)
Bu bölüm, verilerin Sorgu sınıfındaki
sıralama-bazlı yöntemlerin her birine nasıl sıralanacağını açıklamaktadır.
OrderByChild () işlevini kullanırken,
belirtilen alt anahtar içeren verileri aşağıdaki şekilde sıralarsınız.
-Belirtilen alt anahtar için boş değeri
olan çocuklar önce gelir.
-Belirlenen alt anahtar için yanlış değeri
olan çocuklar gelecektir. Birden fazla çocuğun değeri yanlışsa, anahtar
tarafından alfabetik olarak sıralanır.
-Belirlenen alt anahtar için doğru bir değere
sahip çocuklar gelecektir. Birden fazla çocuğun değeri doğruysa, anahtar
tarafından alfabetik olarak sıralanır.
-Nümerik bir değere sahip çocuklar sırayla
artan düzende sıralanırlar. Belirtilen alt düğüm için birden fazla çocuk aynı
sayısal değere sahipse, bunlar anahtarlara göre sıralanır.
Dizeler rakamlardan sonra gelir ve
leksikrafik olarak artan düzende sıralanır. Birden fazla çocuk belirtilen alt
düğüm için aynı değere sahipse, anahtar tarafından alfabetik olrak sıralanır..
Nesneler en son çıkan ve anahtar tarafından
lexicographically olarak artan düzende sıralanır.
Show Conversion Code Hide Conversion Code Show Emoticon Hide Emoticon