Os controles giratórios oferecem uma forma rápida de selecionar um valor de um conjunto. No estado padrão, um ícone de carregamento mostra o valor selecionado naquele momento. Um toque no ícone de carregamento mostra um menu suspenso com todos os outros valores disponíveis. Neles, o usuário pode selecionar um novo valor.

É possível adicionar um ícone de carregamento ao layout com o objeto Spinner
. Normalmente,
isso é feito no layout XML com um elemento <Spinner>
. Exemplo:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
Para preencher o ícone de carregamento com uma lista de opções, você precisa especificar um SpinnerAdapter
no código-fonte de Activity
ou Fragment
.
As principais classes são as seguintes:
Preencher o controle giratório com escolhas do usuário
As opções fornecidas para o controle giratório poderão ter qualquer origem, mas deverão ser informadas por meio de
um SpinnerAdapter
, como um ArrayAdapter
, se as
opções estiverem disponíveis em uma matriz, ou em um CursorAdapter
, se as opções estiverem
disponíveis em uma consulta de banco de dados.
Por exemplo: se as opções disponíveis no ícone de carregamento forem predeterminadas, você poderá fornecê-las com uma matriz de strings definida em um arquivo de recursos de 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>
Com uma matriz como essa, é possível usar o código a seguir no Activity
ou no Fragment
para passar uma matriz ao ícone de carregamento usando
uma instância de ArrayAdapter
:
Kotlin
val spinner: Spinner = findViewById(R.id.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.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);
O método createFromResource()
permite
criar um ArrayAdapter
usando a matriz de strings. O terceiro argumento para
esse método é um recurso de layout que define como a opção selecionada aparece no
ícone de carregamento. O layout do simple_spinner_item
é fornecido pela
plataforma e é o layout padrão que deve ser usado, a menos que você queira definir seu próprio layout
da aparência do ícone de carregamento.
Nesse caso, chame setDropDownViewResource(int)
para especificar
o layout a ser usado pelo adaptador para exibir a lista de opções do ícone de carregamento (simple_spinner_dropdown_item
é outro layout padrão definido pela
plataforma).
Chame setAdapter()
para aplicar o adaptador ao
Spinner
.
Responder a seleções do usuário
Quando o usuário seleciona um item na lista suspensa, o objeto Spinner
recebe um evento de item selecionado.
Para definir o gerenciador do evento de seleção para um ícone de carregamento, implemente a interface AdapterView.OnItemSelectedListener
e o método de retorno de chamada onItemSelected()
.
Por exemplo, veja a seguir uma implementação da interface em um Activity
:
Kotlin
class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) { // An item was 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 was selected. You can retrieve the selected item using // parent.getItemAtPosition(pos) } public void onNothingSelected(AdapterView<?> parent) { // Another interface callback } }
O AdapterView.OnItemSelectedListener
exige os métodos de callback onItemSelected()
e onNothingSelected()
.
Em seguida, especifique a implementação da interface chamando setOnItemSelectedListener()
:
Kotlin
val spinner: Spinner = findViewById(R.id.spinner) spinner.onItemSelectedListener = this
Java
Spinner spinner = (Spinner) findViewById(R.id.spinner); spinner.setOnItemSelectedListener(this);
Se implementar a interface AdapterView.OnItemSelectedListener
com a Activity
ou o Fragment
(como no exemplo acima), você poderá passar
this
como instância da interface.