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.