lightbulb_outline Help shape the future of the Google Play Console, Android Studio, and Firebase. Start survey

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 tarik-turun 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 layout XML dengan elemen <Spinner>. Misalnya:

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

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

Mengisi Spinner dengan Pilihan Pengguna

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

Sebagai contoh, jika pilihan yang tersedia untuk spinner sudah ditentukan sebelumnya, Anda bisa memberinya larik string yang didefinisikan dalam file sumber daya 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 larik seperti yang satu ini, Anda bisa menggunakan kode berikut dalam Activity atau Fragment untuk memasok spinner dengan larik menggunakan instance ArrayAdapter:

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 larik string. Argumen ketiga untuk metode ini adalah sumber daya layout yang mendefinisikan bagaimana pilihan yang dipilih muncul dalam kontrol spinner. Layout simple_spinner_item disediakan oleh platform dan merupakan layout default yang harus Anda gunakan kecuali jika Anda ingin mendefinisikan layout sendiri untuk penampilan spinner.

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

Panggil setAdapter() untuk menerapkan adaptor ke Spinner.

Merespons Pilihan Pengguna

Bila pengguna memilih sebuah item dari menu tarik-turun, objek Spinner akan menerima kejadian saat-item-dipilih.

Untuk mendefinisikan penangan kejadian pemilihan untuk spinner, implementasikan antarmuka AdapterView.OnItemSelectedListener dan metode callback onItemSelected() yang bersangkutan. Misalnya, inilah implementasi antarmuka dalam Activity:

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():

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.