Spinner ve onItemSelected Kullanımları | Android

S

Masaüstü ve web geliştirme ortamlarında selectbox, combobox, listbox gibi isimlerden aşina olduğumuz yapının Android üzerindeki adı Spinner.

Birden fazla seçenek üzerinden işlem yaparken Spinner bileşenine ihtiyacımız var.  Bileşenin içeriği seçenekleri hem dinamik (Activity başladığında), hem de statik olarak (xml üzerinden) eklemek mümkün. Ben bu yazıda XML üzerinden ekleyeceğim.

Yeni bir xml dosyası oluşturup, ismini array.xml yapalım içerisine aşağıdaki kodları ekleyelim:

[code lang=”xml”] <string-array name="secenek">
<item>Secenek 1</item>
<item>Secenek 2</item>
<item>Secenek 3</item>
<item>Secenek 4</item>
</string-array>

[/code]

Daha sonra Spinner’ın kullanılacağı Activty için gereken kodları yazalım:

[code lang=”java”]

mspinner = (Spinner) findViewById(R.id.spinner_id);
mspinnerAdap = ArrayAdapter.createFromResource(getApplicationContext(), R.array.secenek, android.R.layout.simple_spinner_item);
mspinnerAdap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mspinner.setAdapter(mspinnerAdapter);

mspinner.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// yapılacaklar
}
public void onNothingSelected(AdapterView<?> arg0) { }
});

[/code]

Id olarak spinner_id verilmiş bileşene önce eriştik (1). Ardından da ArrayAdapter için az önce oluşturduğumuz String-Array’i kullandık (2). Daha sonra bu seçeneklerin listelenme şeklini belirttik. Son olarak da oluşan adapter’ı bileşene (Spinner) set ettik (4).

Bu işlemlerden sonra Spinner sadece çalışır duruma gelecektir. Yapılan değişiklikler için de bir Listiner ekledik. Buradaki halinin dışında bir Custom Listener yazmak mümkün, o da başka bir yazının konusu olsun.

Oluşturduğumuz Listener’a ait iki metod var. Bunlardan bir tanesi değişiklik durumunda yapılacaklar için diğeri ise değişiklik olmadığında yapılacaklar için.

Son olarak; Activity ilk çalıştığında listener bir kez kendiliğinden çalışır. Bunu engellemek için Boolean tipinde bir değişken ile ilk çalışmayı engelleyebilirsiniz.

Yorum yaz

Oğulcan

Arşivler

Kategoriler