Os controles giratórios oferecem uma forma rápida de selecionar um valor de um conjunto. Na configuração padrão, estado, um ícone de carregamento vai mostrar o valor selecionado. Tocar no ícone de carregamento exibe um menu mostrando todos os outros valores que o usuário pode selecionar.
É possível adicionar um ícone de carregamento ao layout com o
Spinner
objeto, o que normalmente é feito no layout XML com uma
<Spinner>
. Isso é mostrado
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, especifique uma
SpinnerAdapter
no seu
Activity
ou
Fragment
o código-fonte.
Se você estiver usando componentes do Material Design,
expostos
menus suspensos são equivalentes a uma Spinner
.
Preencher o ícone de carregamento com as escolhas do usuário
As opções fornecidas para o ícone de carregamento podem vir de qualquer fonte, mas você
precisa fornecê-las usando um SpinnerAdapter
, como
ArrayAdapter
se as opções estiverem disponíveis em uma matriz ou um
CursorAdapter
se as opções estão disponíveis em uma consulta ao banco de dados.
Por exemplo, se as opções disponíveis para o ícone de carregamento forem predeterminadas, é possível fornecer uma matriz de strings definida em um recurso de string arquivo:
<?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 seguinte código no seu
Activity
ou Fragment
para fornecer ao ícone de carregamento o
usando uma instância de 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);
A
createFromResource()
permite criar um ArrayAdapter
usando a matriz de strings. A
o terceiro argumento para esse método é um recurso de layout que define como o
escolha selecionada aparece no controle giratório. A plataforma oferece
simple_spinner_item
o mesmo layout organizacional. Esse é o layout padrão, a menos que você queira definir seu próprio layout para
a aparência do ícone de carregamento.
Ligação
setDropDownViewResource(int)
para especificar o layout que o adaptador usa para exibir a lista de opções do ícone de carregamento.
simple_spinner_dropdown_item
é outro layout padrão definido pela plataforma.
Ligação
setAdapter()
para aplicar o adaptador ao Spinner
.
Responder às seleções do usuário
Quando o usuário seleciona um item no menu do ícone de carregamento, o
Spinner
objeto
recebe um evento selecionado no item.
Para definir o manipulador de eventos de seleção para um ícone de carregamento, implemente o
AdapterView.OnItemSelectedListener
e a interface de usuário
onItemSelected()
método de callback. Por exemplo, esta é uma implementação da interface em uma
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. } }
A
A interface AdapterView.OnItemSelectedListener
exige a
onItemSelected()
e
onNothingSelected()
métodos de callback.
Especifique a implementação da interface chamando
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 você implementar o AdapterView.OnItemSelectedListener
interface com Activity
ou Fragment
, como no
exemplo anterior, transmita this
como a instância de interface.