Spinner Nedir?
Spinner, kullanıcıya liste halindeki verilerden bir tanesini seçtirmek için kullanılan bir bileşendir. Örneğin; doğum yılı, cinsiyet, il, ilçe seçimleri gibi, bir veri topluluğu içerisinden sadece bir tanesinin seçtirileceği durumlarda sıkça kullanılmaktadır. Bu yazımda sizlere Spinner‘ı Android’de nasıl kullanabileceğinizden bahsedeceğim.
Spinner‘ın kullanımını, anlaşılması kolay olması için basit bir uygulama üzerinden anlatacağım.
Uygulama İçeriği
Uygulama, il ve ilçe seçimlerinin nasıl gerçekleştirildiğine bir örnek olarak hazırlanmıştır. İller ve ilçeler için iki ayrı Spinner bulunmaktadır. Öncelikle birinci Spinner‘dan il olarak İstanbul ve Ankara’dan biri seçildikten sonra seçilen ilin ilçeleri ikinci Spinner‘da gözükmektedir. İlçe seçimini de gerçekleştirdiğinizde seçiminiz Toast olarak ekrana basılmaktadır.
Layout’un Hazırlanması
activity_main.xml dosyamızı açıyoruz ve tasarım kısmına (Graphical Layout) geçiyoruz. Burada Form Widgets sekmesi altından iki tane TextView‘i ve iki tane de Spinner‘ı sürükle bırak mantığıyla Linear Layout‘umuzun içerisine alıyoruz.
XML kısmını aşağıdaki hale gelecek şekilde güncelliyoruz.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dp" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="İl Seçin:" android:textSize="20sp" android:textStyle="bold" /> <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="İlçe Seçin:" android:layout_marginTop="10dp" android:textSize="20sp" android:textStyle="bold" /> <Spinner android:id="@+id/spinner2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
Böylece uygulamamızın tasarımını hazırlamış oluyoruz.
Kodlama (MainActivity)
Şimdi gelelim asıl kısma. Yani hazırladığımız bileşenlere işlev kazandırmaya. MainActivity.java sınıfımız aşağıdaki gibi olacak şekilde güncelleyelim.
public class MainActivity extends Activity { //Spinner içerisine koyacağımız verileri tanımlıyoruz. private String[] iller={"İSTANBUL","ANKARA"}; private String[] ilceler0={"ADALAR","ARNAVUTKÖY","ATAŞEHİR","AVCILAR","BAğCILAR","BAHÇELİEVLER","BAKIRKÖY","BAŞAKŞEHİR","BAYRAMPAŞA","BEŞİKTAŞ","BEYLİKDÜZÜ","BEYOĞLU","BÜYÜKÇEKMECE","BEYKOZ","ÇATALCA","ÇEKMEKÖY","ESENLER","ESENYURT","EYÜP","FATİH","GAZİOSMANPAŞA","GÜNGÖREN","KADIKÖY","KAĞITHANE","KARTAL","KÜÇÜKÇEKMECE","MALTEPE","PENDİK","SANCAKTEPE","SARIYER","SİLİVRİ","SULTANBEYLİ","SULTANGAZİ","ŞİLE","ŞİŞLİ","TUZLA","ÜSKÜDAR","ÜMRANİYE","ZEYTİNBURNU"}; private String[] ilceler1={"AKYURT","ALTINDAĞ","AYAŞ","BALA","BEYPAZARI","ÇAMLIDERE","ÇANKAYA","ÇUBUK","ELMADAĞ","ETİMESGUT","EVREN","GÖLBAŞI","GÜDÜL","HAYMANA","KALECİK","KAZAN","KEÇİÖREN","KIZILCAHAMAM","MAMAK","NALLIHAN","POLATLI","PURSAKLAR","SİNCAN","ŞEREFLİKOÇHİSAR","YENİMAHALLE"}; //Spinner'ları ve Adapter'lerini tanımlıyoruz. private Spinner spinnerIller; private Spinner spinnerIlceler; private ArrayAdapter<String> dataAdapterForIller; private ArrayAdapter<String> dataAdapterForIlceler; @Override // Bu metod uygulama açıldığında çalıştırılan metod. protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //xml kısmında hazırladığımğız spinnerları burda tanımladıklarımızla eşleştiriyoruz. spinnerIller = (Spinner) findViewById(R.id.spinner1); spinnerIlceler = (Spinner) findViewById(R.id.spinner2); //Spinner'lar için adapterleri hazırlıyoruz. dataAdapterForIller = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, iller); dataAdapterForIlceler = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,ilceler0); //Listelenecek verilerin görünümünü belirliyoruz. dataAdapterForIller.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); dataAdapterForIlceler.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //Hazırladğımız Adapter'leri Spinner'lara ekliyoruz. spinnerIller.setAdapter(dataAdapterForIller); spinnerIlceler.setAdapter(dataAdapterForIlceler); // Listelerden bir eleman seçildiğinde yapılacakları tanımlıyoruz. spinnerIller.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //Hangi il seçilmişse onun ilçeleri adapter'e ekleniyor. if(parent.getSelectedItem().toString().equals(iller[0])) dataAdapterForIlceler = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,ilceler0); else if(parent.getSelectedItem().toString().equals(iller[1])) dataAdapterForIlceler = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,ilceler1); dataAdapterForIlceler.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerIlceler.setAdapter(dataAdapterForIlceler); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); spinnerIlceler.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //Seçilen il ve ilçeyi ekranda gösteriyoruz. Toast.makeText(getBaseContext(), ""+spinnerIller.getSelectedItem().toString()+"n"+parent.getSelectedItem().toString(), Toast.LENGTH_SHORT).show(); } public void onNothingSelected(AdapterView<?> parent) { } }); } }
Gerekli açıklamaları kod içerisine yazdım. Umarım faydalı olmuştur.
Ekran Görüntüleri
Kaynak Kodlar
Uygulamanın kaynak kodları için: https://github.com/mursidyazar/Android-Spinner
[…] Spinner […]
[…] Spinner […]
[…] Spinner […]
[…] Spinner […]
[…] Spinner […]
[…] Spinner […]
Merhaba bunu 2 dizi ile yapar mısınız?
dizi1 iller
dizi2 ilçeler