Neste artigo vou apresentar os conceitos básicos sobre o componente Spinner e sua utilização em aplicações Android usando o
No estado padrão ele exibe o valor atualmente selecionado e, quando você interage com o controle ele exibe um menu suspenso com os demais valores e o usuário pode selecionar um novo item. (Por padrão a classe Spinner espera que o recurso fornecido seja referenciado como um simples TextView).
Para incluir um Spinner em uma view podemos usar a caixa de ferramentas (ToolBox) no ambiente do Visual Studio:
De forma geral para preencher um Spinner com os dados desejados precisamos usar um ArrayAdapter que é uma classe concreta que implementa BaseAdatper e se baseia em um array de objetos que funciona como um adapter.
Um Adapter (adaptador) serve como ponte entre os componentes de interface do usuário (UI) e a fonte de dados que preenche os dados nestes componentes. Ele trata e envia os dados para a respectiva view que pode obter esses dados exibindo-os a seguir em diferentes tipos de views como spinner, list view, grid view, etc.
O Xamarin Android fornece várias subclasses de adaptador que são úteis para recuperar diferentes tipos de dados e views para uma AdapterView.
Vamos ver na prática como exibir uma lista de itens de uma fonte de dados declarada em um arquivo XML usando o Spinner em uma aplicação Android criada no Visual Studio com Xamarin.
- Properties - Contém o arquivo AndroidManifest.xml que descreve as funcionalidades e requisitos da sua aplicação Android, e o arquivo AssemblyInfo.cs contém informação sobre o projeto como número de versão e build.
- References - Contém as bibliotecas Mono.Android, System.Core e todas as bibliotecas usadas no seu projeto;
A maioria dos componentes está disponíveis diretamente do Xamarin Component Store e são free (não todos) e prontos para serem usados; (Para incluir um componente clique com o botão direito sobre Components e a seguir em Get More Components);
- Assets e Resources - Contém arquivos que não são código, como imagens, sons, arquivos XML e qualquer outro recurso que sua aplicação for usar. Os arquivos externos colocados na pasta Assets são facilmente acessíveis em tempo de execução através do Asset Manager.
Já os arquivos colocados na pasta Resources precisam ser declarados e mantidos em uma lista com os IDs dos recursos que você desejar usar em tempo de execução.
De forma geral, todas a imagens, ícones, sons e outros arquivos externos são colocados na pasta Resources enquanto que dicionários e arquivos XML são postos na pasta Assets;
Este texto se comporta como um título para a view que será exibida acima do Spinner. Precisamos definir o nome da string estado_prompt no arquivo Strings.xml.
Estamos usando SetDropDownViewResource() para definir a aparência de cada item quando o widget for aberto.
No evento ItemSelected do Spinner definimos uma janela de aviso usando a classe Toast para exibir qual o item foi selecionado :
Para saber mais sobre diálogos de alerta e avisos veja o artigo : Xamarin Android - Exibindo uma janela de Alerta com AlertDialog.Builder
Estamos usando a classe Log do namespace Android.Util para monitorar o ciclo de vida da aplicação durante o debug.
Lembre-se de usar este recurso somente em tempo de desenvolvimento. Uma dica é usar uma tag constante na classe Log.