Xamarin Forms ListView ile SearchBar Kullanımı

Merhaba,

Önceki makalemizde ListView kullanımı ile ilgili hemen hemen tüm ayrıntıları inceledik fakat başka kontroller ile ListView etkileşimini detaylı olarak bu makalede incelemeye çalışacağız.

Senaryomuzu güncelleyelim;

Xamarin.Forms SearchBar kontrolü ile ListView içerisindeki oyuncuların FullName özelliklerine göre anlık arama yapabilme.

Tüm olayları ve senaryoyu kavrayabilmek adına önceki makalemizi okumanızı tavsiye ediyorum.


SearchBar kontrolümü ListView kontrolümün hemen üzerine ekliyorum.

Xamarin.Forms SearchBar

SearchBar'ın TextChanged event'ini ve Placeholder özelliğini kullanacağım.

Not: SearchButtonPressed event'ini kullanabilirdik fakat, senaryomuzda karakter girildikçe arama yapılmasını istiyoruz.

SearchBar'ın Text özelliğine her bir karakter girildiğinde Players.xaml.cs tarafında bir metot yardımı ile istediğim kural setine göre işlemler yapacağım.

Xamarin.Forms SearchBar

SearchBar kontrolümün'ün event'inde TextChangedEventArgs'in NewTextValue özelliği ile yazılan text değerini alıyorum ve GetPlayersWithGrouping metodu yardımı ile arama işlemlerimi kural bazlı gerçekleştirebiliyorum.

Gelen değer boş değilse ve karakter sayısı 2'den büyük ise metot arama işlemi ile çalışacak, eğer arama yaparken çarpı işareti ile aramadan çıkarsa veya yazdığı text'i silerse liste baştan yüklenecek.

Xamarin.Forms SearchBar

GetPlayersWithGrouping metodunu tüm uygulamamdaki ListView Binding işlemlerimde kullandığım için, isteğin bir arama işlemi olduğunu alamak için playerFullName değişkeni ile kontrol ediyorum.

Aslında temel olarak yaptığımız tek işlem SearchBar ile ListView datasını değiştirmek 🙂 (Değişen 1-2 yeri atlamamak gerekiyor.)

  • Ek olarak Players sayfamdaki refreshCount değişkeni static bir değişken olarak BJKFactory sınıfına eklendi ve başlangıç değer 0 verildi.

  • Uygulamamızın 1. versiyon'unda public static Players değişkeni'nin erişim belirleyicisi private olarak değiştirildi. Çünkü artık GetPlayersWithGrouping metodunu kullanıyoruz. Players değişkeni, Factory sınıfı ilk defa çalıştırıldığında datayı private şekilde tutan bir değişken artık. İçerisindeki datayı hiç değiştirmediğimiz için bir daha doldurma ihtiyacı duymuyoruz. Çünkü her GetPlayersWithGrouping metodu çağırıldığında result değişkenine Players datasını atıp result içerisinde işlem yapıyoruz.
Xamarin.Forms SearchBar Xamarin.Forms SearchBar Xamarin.Forms SearchBar

 

github

Görüşmek üzere.

Yiğit

Xamarin Developer, Consultant & Architect. Community Leader and Director of Xamarin Türkiye

Post A Reply