Spinner

Spinner menyediakan cara cepat untuk memilih salah satu dari sekumpulan nilai. Dalam status default, spinner menampilkan nilai yang dipilihnya saat ini. Menyentuh spinner akan menampilkan menu drop-down bersama semua nilai lain yang tersedia, yang memungkinkan pengguna memilih salah satunya.

Anda bisa menambahkan spinner ke layout dengan objek Spinner. Anda biasanya harus melakukannya dalam tata letak XML dengan elemen <Spinner>. Contoh:

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

Untuk mengisi spinner dengan daftar pilihan, Anda perlu menetapkan SpinnerAdapter dalam kode sumber Activity atau Fragment Anda.

Class utama adalah sebagai berikut:

Mengisi Spinner dengan Pilihan Pengguna

Pilihan yang Anda sediakan untuk spinner bisa berasal dari sumber apa saja, namun harus disediakan melalui SpinnerAdapter, seperti ArrayAdapter jika pilihan tersedia dalam array atau CursorAdapter jika pilihan tersedia dari kueri database.

Sebagai contoh, jika pilihan yang tersedia untuk spinner sudah ditentukan sebelumnya, Anda bisa memberinya array string yang didefinisikan dalam file resource string:

<?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>

Dengan array seperti yang satu ini, Anda bisa menggunakan kode berikut dalam Activity atau Fragment untuk menyediakan spinner dengan array menggunakan instance ArrayAdapter:

Kotlin

val spinner: Spinner = findViewById(R.id.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.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);

Metode createFromResource() memungkinkan Anda membuat ArrayAdapter dari array string. Argumen ketiga untuk metode ini adalah resource tata letak yang mendefinisikan tampilan pilihan yang ditetapkan saat muncul dalam kontrol spinner. Tata letak simple_spinner_item disediakan oleh platform dan merupakan tata letak default yang harus Anda gunakan, kecuali jika Anda ingin mendefinisikan tata letak sendiri untuk tampilan spinner.

Kemudian Anda harus memanggil setDropDownViewResource(int) untuk menetapkan tata letak yang harus digunakan adaptor untuk menampilkan daftar pilihan spinner (simple_spinner_dropdown_item adalah tata letak standar lainnya yang didefinisikan oleh platform).

Panggil setAdapter() untuk menerapkan adaptor ke Spinner Anda.

Merespons Pilihan Pengguna

Jika pengguna memilih item dari menu drop-down, objek Spinner akan menerima peristiwa pada-item-dipilih.

Untuk mendefinisikan pengendali peristiwa pilihan pada spinner, implementasikan antarmuka AdapterView.OnItemSelectedListener dan metode callback onItemSelected() terkait. Misalnya, berikut implementasi antarmuka dalam Activity:

Kotlin

class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener {

    override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) {
        // An item was 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 was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
    }

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

AdapterView.OnItemSelectedListener memerlukan metode callback onItemSelected() dan onNothingSelected().

Kemudian Anda perlu menetapkan implementasi antarmuka dengan memanggil setOnItemSelectedListener():

Kotlin

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

Java

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

Jika Anda mengimplementasikan antarmuka AdapterView.OnItemSelectedListener dengan Activity atau Fragment (misalnya, contoh di atas), Anda bisa meneruskan this sebagai instance antarmuka.