Uygulamanıza döner simge ekleyin

Çarklar, bir kümeden bir değer seçmeniz için hızlı bir yol sağlar. Değer değiştirici, varsayılan durumda o anda seçili olan değeri gösterir. Değer değiştiriciye dokunduğunuzda, kullanıcının seçebileceği diğer tüm değerleri gösteren bir menü görüntülenir.

Şekil 1. Değer değiştiriciden çıkan ve kullanılabilir değerleri gösteren bir menü.

Spinner nesnesiyle düzeninize bir döner simge ekleyebilirsiniz. Bunu genellikle XML düzeninizde bir <Spinner> öğesiyle yaparsınız. Bu, aşağıdaki örnekte gösterilmektedir:

<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

Değer değiştiriciyi bir seçenek listesiyle doldurmak için Activity veya Fragment kaynak kodunuzda bir SpinnerAdapter belirtin.

Materyal Tasarım Bileşenleri kullanıyorsanız gösterilen açılır menüler, Spinner öğesine eşdeğerdir.

Dönen simgeyi kullanıcı seçimleriyle doldurun

Değer değiştirici için sağladığınız seçenekler herhangi bir kaynaktan gelebilir ancak bunları bir SpinnerAdapter aracılığıyla sağlamanız gerekir. Örneğin, seçenekler bir dizide kullanılabiliyorsa ArrayAdapter veya seçenekler bir veritabanı sorgusundan kullanılabiliyorsa CursorAdapter aracılığıyla sağlanmalıdır.

Örneğin, döner simgeniz için kullanılabilecek seçenekler önceden belirlenmişse bunlara dize kaynak dosyasında tanımlanmış bir dize dizisi sağlayabilirsiniz:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
</resources>

Bunun gibi bir dizide, ArrayAdapter örneği kullanarak dönerciye diziyi sağlamak için Activity veya Fragment etiketinizde aşağıdaki kodu kullanabilirsiniz:

Kotlin

val spinner: Spinner = findViewById(R.id.planets_spinner)
// Create an ArrayAdapter using the string array and a default spinner layout.
ArrayAdapter.createFromResource(
        this,
        R.array.planets_array,
        android.R.layout.simple_spinner_item
).also { adapter ->
    // Specify the layout to use when the list of choices appears.
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    // Apply the adapter to the spinner.
    spinner.adapter = adapter
}

Java

Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
// Create an ArrayAdapter using the string array and a default spinner layout.
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
        this,
        R.array.planets_array,
        android.R.layout.simple_spinner_item
);
// Specify the layout to use when the list of choices appears.
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner.
spinner.setAdapter(adapter);

createFromResource() yöntemi, dize dizisinden bir ArrayAdapter oluşturmanızı sağlar. Bu yöntemin üçüncü bağımsız değişkeni, seçilen seçimin değer değiştirici kontrolünde nasıl göründüğünü tanımlayan bir düzen kaynağıdır. Platform, simple_spinner_item düzenini sağlar. Değer değiştiricinin görünümü için kendi düzeninizi tanımlamak istemiyorsanız varsayılan düzen budur.

Bağdaştırıcının, döner simge seçeneklerinin listesini görüntülemek için kullandığı düzeni belirtmek üzere setDropDownViewResource(int) çağrısı yapın. simple_spinner_dropdown_item, platform tarafından tanımlanan başka bir standart düzendir.

Bağdaştırıcıyı Spinner cihazınıza uygulamak için setAdapter() numaralı telefonu arayın.

Kullanıcı seçimlerine yanıt verin

Kullanıcı, değer değiştiricinin menüsünden bir öğe seçtiğinde Spinner nesnesi, öğe seçiminde bir etkinlik alır.

Değer değiştirici için seçim etkinliği işleyiciyi tanımlamak üzere AdapterView.OnItemSelectedListener arayüzünü ve karşılık gelen onItemSelected() geri çağırma yöntemini uygulayın. Örneğin, arayüzün Activity içindeki bir uygulamasını aşağıda görebilirsiniz:

Kotlin

class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener {
    ...
    override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) {
        // An item is selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos).
    }

    override fun onNothingSelected(parent: AdapterView<*>) {
        // Another interface callback.
    }
}

Java

public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    ...
    public void onItemSelected(AdapterView<?> parent, View view,
            int pos, long id) {
        // An item is selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos).
    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback.
    }
}

AdapterView.OnItemSelectedListener arayüzü, onItemSelected() ve onNothingSelected() geri çağırma yöntemlerini gerektirir.

setOnItemSelectedListener() çağrısı yaparak arayüz uygulamasını belirtin:

Kotlin

val spinner: Spinner = findViewById(R.id.planets_spinner)
spinner.onItemSelectedListener = this

Java

Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
spinner.setOnItemSelectedListener(this);

Önceki örnekte olduğu gibi, AdapterView.OnItemSelectedListener arayüzünü Activity veya Fragment ile uygularsanız this arayüzü örneği olarak geçirebilirsiniz.