Le rotelline consentono di selezionare rapidamente un valore da un insieme. Nell'impostazione predefinita , una rotellina mostra il valore attualmente selezionato. Toccare la rotellina mostra un menu con tutti gli altri valori che l'utente può selezionare.
Puoi aggiungere una rotellina al layout con la
Spinner
, che di solito fai nel layout XML con un
Elemento <Spinner>
. come illustrato di seguito
esempio:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
Per compilare la rotellina con un elenco di opzioni, specifica un
SpinnerAdapter
nel tuo
Activity
o
Fragment
codice sorgente.
Se utilizzi i componenti di Material Design,
esposto
menu a discesa equivalgono a Spinner
.
Completa la rotellina con le scelte dell'utente
Le scelte fornite per la rotellina possono provenire da qualsiasi fonte, ma tu
devono fornirli tramite un SpinnerAdapter
, ad esempio
ArrayAdapter
se le scelte sono disponibili in un array o in una
CursorAdapter
se le scelte sono disponibili da una query di database.
Ad esempio, se le opzioni disponibili per la rotellina sono predeterminate, puoi fornire loro un array di stringhe definito in risorsa stringa 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>
Con un array come questo, puoi utilizzare il seguente codice
Activity
o Fragment
per fornire alla rotellina della
utilizzando un'istanza di 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);
La
createFromResource()
consente di creare un ArrayAdapter
dall'array di stringhe. La
il terzo argomento per questo metodo è una risorsa di layout che definisce in che modo
la scelta selezionata viene visualizzata nel controllo della rotellina. La piattaforma offre
simple_spinner_item
layout. Questo è il layout predefinito, a meno che tu non voglia definire un layout personalizzato per
l'aspetto della ruota che gira.
Chiama
setDropDownViewResource(int)
per specificare il layout utilizzato dall'adattatore per visualizzare l'elenco di opzioni di rotazione.
simple_spinner_dropdown_item
è un altro layout standard definito dalla piattaforma.
Chiama
setAdapter()
per collegare l'adattatore a Spinner
.
Rispondere alle selezioni degli utenti
Quando l'utente seleziona un elemento dal menu della rotellina, la
Spinner
oggetto
riceve un evento selezionato sull'articolo.
Per definire il gestore di eventi di selezione per una rotellina, implementa la funzione
AdapterView.OnItemSelectedListener
e il corrispondente codice
onItemSelected()
di callback di Google. Ad esempio, ecco un'implementazione dell'interfaccia in una
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. } }
La
L'interfaccia AdapterView.OnItemSelectedListener
richiede
onItemSelected()
e
onNothingSelected()
di callback di Google.
Specifica l'implementazione dell'interfaccia chiamando
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);
Se implementi AdapterView.OnItemSelectedListener
con il tuo Activity
o Fragment
, come nell'interfaccia
nell'esempio precedente, puoi passare this
come istanza dell'interfaccia.