Ünite 3: Tablo Tabanlı Veri Gösterimi — Alıştırmalar
Ders kitabının açık uçlu alıştırmaları. Bunlar çoktan seçmeli sınav sorusu değil — düşünmeni, araştırmanı, kendi cümlelerinle anlatmanı isteyen etkinlikler. Kitabın verdiği örnek yanıtlar kapalı duruyor; önce kendin dene.
Alıştırma 1myders hazırladı
ListView ile TableView bileşenlerini veri yapısı, kullanım amacı ve sunduğu boyut imkânları açısından karşılaştırarak hangi durumlarda hangisinin tercih edilmesi gerektiğini açıklayınız.
Yanıt / ipucu
ListView tek boyutlu veri listelerini göstermek için kullanılırken, TableView çok sütunlu ve satırlı karmaşık verileri yan yana göstermek için tercih edilir. Tek bir metin listelenecekse ListView, bir nesnenin birden fazla özelliğinin (ad, soyad, numara gibi) karşılaştırılması gerekiyorsa TableView kullanılmalıdır.
Alıştırma 2myders hazırladı
PropertyValueFactory kullanımının avantajlarını ve dezavantajlarını değerlendirerek, lambda ifadeleri ile veri bağlamanın neden daha güvenli bir alternatif olduğunu açıklayınız.
Yanıt / ipucu
PropertyValueFactory hızlı ve pratik bir veri bağlama sunar ancak metinsel isim eşleştirmesi yaptığı için yazım hatalarında derleme hatası vermez ve sütun boş kalır. Lambda ifadeleri ise doğrudan kod seviyesinde property bağlaması yaptığından derleme aşamasında (compile-time) hata kontrolü sağlar ve daha güvenlidir.
Alıştırma 3myders hazırladı
Kullanıcının arama kutusuna yazdığı metne göre tablodaki verileri filtrelemek için FilteredList ve Predicate mekanizmasının nasıl çalıştığını bir senaryo üzerinden kurgulayınız.
Yanıt / ipucu
FilteredList, ana ObservableList'i sarmalayarak bir filtreleme koşulu (Predicate) uygular. Örneğin, arama kutusuna girilen metin her değiştiğinde Predicate güncellenerek sadece bu metni içeren nesnelerin tabloda kalması sağlanır ve ana veri kaynağına zarar verilmeden görünüm güncellenir.
Alıştırma 4myders hazırladı
TableView üzerinde sütun başlıklarına tıklandığında verilerin sıralanabilmesi için SortedList ve comparatorProperty bağlama adımlarını araştırıp açıklayınız.
Yanıt / ipucu
SortedList, ana listenin sıralanmış bir görünümünü sunar. TableView'in sıralama özelliğinin çalışması için SortedList'in comparatorProperty değeri tablonun comparatorProperty değerine bağlanır ve son olarak SortedList tabloya veri kaynağı olarak set edilir.
Alıştırma 5myders hazırladı
Düzenlenebilir (editable) bir TableView hücresinde kullanıcının girdiği yeni değerlerin modele başarıyla kaydedilmesi için StringConverter sınıfının üstlendiği görevi ve önemini açıklayınız.
Yanıt / ipucu
StringConverter, kullanıcının TextFieldTableCell gibi hücrelere girdiği metinsel (String) değerleri modelin beklediği veri türüne (örneğin Integer veya Double) dönüştürür. Eğer bu dönüştürücü tanımlanmazsa, arayüzden girilen yeni değerler model nesnesine doğru şekilde aktarılamaz ve veri kaybı yaşanır.