Nesta vídeo aula, eu vou fazer a demonstração do elemento da interface gráfica chamado de Spinner. O spinner é este elemento que nos fornece uma série de opções. Por exemplo, eu vou selecionar aqui a terceira opção. Vejam que eu adicionei gatilho, para que ao selecionar uma opção uma mensagem seja enviada ao usuário informando qual opção foi selecionada e qual o índice dessa opção. Ao clicar no botão, uma mensagem semelhante é fornecida. No código xml de layout, eu adicionei esse elemento utilizando a tag spinner. Percebam aqui que eu coloquei id spinner, para acessar este elemento do código Java. Também configurei os atributos de largura e altura. E também adicionei último atributo chamado entries, que é diferente do que eu fazia nos elementos da interface gráfica anteriores. Esse atributo entries é específico para spinners e para list views que nós veremos adiante. Neste atributo entries, eu estou fazendo referência a uma variável que é do tipo array. E essa variável eu coloquei dentro do código strings ponto xml e ela tem a seguinte sintaxe. Eu iniciei ela com a marcação string array, dei o nome de spinner values para ela, e esse nome é o que eu utilizei para acessar os valores dessa string array de dentro do spinner, utilizando o atributo entries. Observe spinner values aqui. Na verdade o nome dele é spinner values e não spinner array. E dentro desse string array eu coloquei vários itens, que são os itens que aparecerão na minha spinner. Esse método de adicionar itens à uma spinner é o que nós chamamos de maneira estática. Vamos ao código Java. Uma spinner, ela não herda de botão. Então ela não tem o atributo on click. Além disso, uma spinner não tem nenhum atalho para que eu possa saber qual foi o item que foi selecionado. Nesse caso, eu preciso adicionar gatilhos utilizando listener. Esse gatilho eu criei utilizando uma classe anônima. Percebam que aqui eu estou criando objeto 'Item selected listener', começando com i maiúsculo. E esse 'item selected listener', ele implementa a interface que está adapter view, ponto, on item selected listener. Entretanto, como eu vou utilizar essa classe apenas uma vez, a classe que eu vou criar, então eu vou criar essa classe de maneira anônima. Como eu crio uma classe de maneira anônima? Eu primeiro utilizo a palavra new, indico adapter view, ponto, on item selected listener, que é o nome da interface. Entretanto, ao invés de colocar ponto e vírgula, eu coloco uma chave como se eu fosse iniciar a declaração de uma classe. E é isso que realmente eu vou fazer. Eu vou iniciar a declaração de uma classe. E essa classe não terá o nome. Por isto que nós chamamos essa classe de anônima. Ela servirá apenas para instanciar objeto 'item selected listener'. A interface que está 'adapter view, ponto, on item selected listener', ela me pede para implementar dois métodos. O primeiro desses métodos é o método 'on item selected', que é o método utilizado quando algum item da list view for selecionado. E o método 'on nothing selected', que é o método que será chamado quando nada na list view for selecionada. O método 'on item selected' ele possui vários parâmetros, sendo que eu utilizei apenas dois. Eu utilizei o segundo parâmetro que é o 'selected item view', que é do tipo view, e o terceiro parâmetro, que é o parâmetro 'position'. Para obter o texto que eu vou informar ao usuário, eu transformei esse 'selected item view', uma text view. Daí pode surgir a primeira dúvida. Por que eu transformei essa view para uma text view? Eu fiz isso porque dentro de uma spinner, cada uma das opções que são mostradas ao usuário são na verdade text views. Então, esse método está me retornando a text view que foi selecionada pelo usuário. Então para obter a mensagem que estava naquela text view, eu primeiro transformo a view para o objeto apropriado e após isso eu posso utilizar o método 'get text', que existe na text view. E feito isso eu transformo o que eu recebi para uma string. O passo final já deve ser conhecido por você. Eu utilizei essa variável local 'txt' para criar uma mensagem que eu informei ao usuário. Por exemplo, você selecionou 'a txt', que deve retornar alguma coisa como 'primeira opção, segunda opção' e assim por diante de índice e no índice eu coloquei 'position' que veio por parâmetro, que informa qual foi a posição clicada pelo usuário. O método 'on click' eu fiz código pouco diferente. Primeiramente, eu utilizei spinner, ponto, get selected, item, para obter qual foi o item selecionado pelo usuário. E este item já pode ser transformado para uma string. A posição eu obtive utilizando 'spinner, ponto, get selected, item, position'. E na mensagem Toast eu coloquei uma mensagem parecida com a que eu gerava quando o usuário selecionava item.