Android

Android – Spinner Kullanımı

Spinner Nedir?


Ekran Resmi 2014-10-17 12.29.16Spinner
, 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.

Ekran Resmi 2014-10-17 12.34.58

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

Screenshot 2015-05-22 23.08.38 Screenshot 2015-05-22 23.08.49

Kaynak Kodlar

Uygulamanın kaynak kodları için: https://github.com/mursidyazar/Android-Spinner

Benzer Konular

Android Görsel Bileşenler;

  1. TextView ve EditText
  2. ImageView
  3. Button ve StateListDrawable
  4. Toast
  5. ListView
  6. WebView
  7. Spinner
  8. CheckBox
  9. ProgressBar
  10. SeekBar

1 Yorum

Yorum Yap