Menambahkan indikator lingkaran berputar ke aplikasi

Spinner menyediakan cara cepat untuk memilih salah satu dari sekumpulan nilai. Dalam status default, indikator lingkaran berputar menampilkan nilai yang dipilihnya saat ini. Mengetuk indikator lingkaran berputar akan menampilkan menu yang menunjukkan semua nilai lain yang dapat dipilih pengguna.

Gambar 1. Menu dari indikator lingkaran berputar, yang menunjukkan nilai yang tersedia.

Anda dapat menambahkan indikator lingkaran berputar ke tata letak dengan objek Spinner, yang biasanya Anda lakukan di tata letak XML dengan elemen <Spinner>. Hal ini ditunjukkan dalam contoh berikut:

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

Untuk mengisi indikator lingkaran berputar dengan daftar pilihan, tentukan SpinnerAdapter dalam kode sumber Activity atau Fragment.

Jika Anda menggunakan Komponen Desain Material, menu drop-down yang ditampilkan setara dengan Spinner.

Mengisi indikator lingkaran berputar dengan pilihan pengguna

Pilihan yang Anda sediakan untuk indikator lingkaran berputar dapat berasal dari sumber apa pun, tetapi Anda harus menyediakannya melalui SpinnerAdapter, seperti ArrayAdapter jika pilihan tersebut tersedia dalam array atau CursorAdapter jika pilihan tersebut tersedia dari kueri database.

Misalnya, jika pilihan yang tersedia untuk indikator lingkaran berputar sudah ditentukan sebelumnya, Anda dapat 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 ini, Anda dapat menggunakan kode berikut dalam Activity atau Fragment untuk menyediakan indikator lingkaran berputar dengan array menggunakan instance ArrayAdapter:

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);

Metode createFromResource() memungkinkan Anda membuat ArrayAdapter dari array string. Argumen ketiga untuk metode ini adalah resource tata letak yang menentukan cara pilihan yang dipilih muncul dalam kontrol indikator lingkaran berputar. Platform ini menyediakan tata letak simple_spinner_item. Ini adalah tata letak default, kecuali jika Anda ingin menentukan tata letak sendiri untuk tampilan indikator lingkaran berputar.

Panggil setDropDownViewResource(int) untuk menentukan tata letak yang digunakan adaptor untuk menampilkan daftar pilihan indikator lingkaran berputar. simple_spinner_dropdown_item adalah tata letak standar lain yang ditentukan oleh platform.

Panggil setAdapter() untuk menerapkan adaptor ke Spinner Anda.

Merespons pilihan pengguna

Saat pengguna memilih item dari menu indikator lingkaran berputar, objek Spinner akan menerima peristiwa pada item yang dipilih.

Untuk menentukan pengendali peristiwa pemilihan untuk indikator lingkaran berputar, implementasikan antarmuka AdapterView.OnItemSelectedListener dan metode callback onItemSelected() yang sesuai. Misalnya, berikut adalah implementasi antarmuka dalam Activity:

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.
    }
}

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

Tentukan implementasi antarmuka dengan memanggil setOnItemSelectedListener():

Kotlin

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

Java

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

Jika Anda mengimplementasikan antarmuka AdapterView.OnItemSelectedListener dengan Activity atau Fragment, seperti dalam contoh sebelumnya, Anda dapat meneruskan this sebagai instance antarmuka.