Menambahkan indikator lingkaran berputar ke aplikasi

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

Gambar 1. Menu dari indikator lingkaran berputar yang menampilkan masing-masing.

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

<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 di Activity atau Fragment pada kode sumber Anda.

Jika Anda menggunakan Komponen Desain Material, terekspos menu dropdown setara dengan Spinner.

Mengisi indikator lingkaran berputar dengan pilihan pengguna

Pilihan yang Anda sediakan untuk indikator lingkaran berputar bisa berasal dari sumber mana saja, tetapi Anda harus menyediakannya melalui SpinnerAdapter, seperti ArrayAdapter jika pilihan tersedia dalam array atau CursorAdapter jika pilihan tersedia dari kueri {i>database<i}.

Misalnya, jika pilihan yang tersedia untuk indikator lingkaran berputar Anda sudah ditentukan sebelumnya, Anda bisa memberi mereka array string yang didefinisikan dalam resource string file:

<?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 {i>array<i} seperti ini, Anda dapat menggunakan kode berikut di Activity atau Fragment untuk memberikan indikator lingkaran berputar 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);

Tujuan createFromResource() memungkinkan Anda membuat ArrayAdapter dari array string. Tujuan argumen ketiga untuk metode ini adalah sumber daya tata letak yang mendefinisikan pilihan yang dipilih akan muncul dalam kontrol indikator lingkaran berputar. Platform ini menyediakan simple_spinner_item tata letak. Ini adalah tata letak {i>default<i} kecuali Anda ingin mendefinisikan tata letak Anda sendiri untuk tampilan indikator lingkaran berputar.

Telepon setDropDownViewResource(int) untuk menetapkan tata letak yang digunakan adaptor untuk menampilkan daftar pilihan indikator lingkaran berputar. simple_spinner_dropdown_item adalah tata letak standar lainnya yang didefinisikan oleh platform.

Telepon setAdapter() untuk menerapkan adaptor ke Spinner Anda.

Merespons pilihan pengguna

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

Untuk mendefinisikan pengendali peristiwa pemilihan untuk indikator lingkaran berputar, implementasikan metode AdapterView.OnItemSelectedListener dan antarmuka pengguna onItemSelected() . 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.
    }
}

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

Menentukan 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 AdapterView.OnItemSelectedListener dengan Activity atau Fragment, seperti dalam contoh sebelumnya, Anda dapat meneruskan this sebagai instance antarmuka.