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.

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.