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