O Spinners é uma visualização e escolha de uma lista de itens dentro de uma caixa, que o usuário pode expandir para escolher.
Se você quer que o usuário escolha apenas uma opção entre várias, e quer que essas opções fiquem minimizadas enquanto o usuário não está escolhendo, o Spinner é a opção certa.
Spinner
: como criar no layout No xml basta usar o elemento
<Spinner
android:id="@+id/id_do_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
Mas e seu conteúdo? Será definido no java
Spinner
: como definir e interagir com o conteúdo no java
Primeiro temos que ter as referências para o spinner
Spinner spinner = findViewById(R.id.id_do_spinner);
Depois temos que criar um array com os nomes que queremos como conteúdo:
String[] nomes = {
"Primeiro Nome",
"Segundo Nome",
"Terceiro Nome",
"Último Nome",
};
Agora temos que criar um adaptador, este objeto deve incluir as opções de conteúdo que acabamos de definir:
ArrayAdapter<String> adapter = new ArrayAdapter<>(
this,
androidx.appcompat.R.layout.support_simple_spinner_dropdown_item,
nomes // <-- AQUI deve entrar o nome do array de strings
);
Agora, devemos colocar o adaptador no spinner
:
spinner.setAdapter(adapter);
Spinner
Para pegar o nome que foi escolhido no Spinner precisamos usar o método getSelectedItem()
do spinner
No código abaixo estamos usando o método e transformando o resultado para String
String escolhido = spinner.getSelectedItem().toString();
Mas ATENÇÃO ao comparar Strings devemos usar o método equals(String)
Então ao invés de fazer isso:
if(escolhido=="Primeiro Nome")
Devemos fazer o seguinte:
if(escolhido.equals("Primeiro Nome"))
Todos estes métodos serão explicados nas aulas de Orientação a Objetos.
Abaixo vamos ver um programa onde o usuário escolhe um planeta e o programa diz qual é a distância do da Terra até o planeta.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:gravity="center"
android:padding="20dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="45dp"
android:text="Qual a distância da Terra até este planeta?"
android:padding="20dp"
/>
<Spinner
android:id="@+id/planets_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/escolher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Escolher"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="20dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Distância Mínima: "
/>
<TextView
android:id="@+id/dist_min"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Milhões de Quilômetros"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="20dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Distância Máxima: "
/>
<TextView
android:id="@+id/dist_max"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Milhões de Quilômetros"
/>
</LinearLayout>
</LinearLayout>
package com.viniciusdenovaes.fisrtspinner;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
Spinner spinner;
Button escolher;
TextView textDistMin;
TextView textDistMax;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
spinner = findViewById(R.id.planets_spinner);
escolher = findViewById(R.id.escolher);
textDistMin = findViewById(R.id.dist_min);
textDistMax = findViewById(R.id.dist_max);
String[] planetas = {
"Venus",
"Mars",
"Mercury",
"Sun",
"Jupiter",
"Saturn",
"Uranus",
"Pluto",
"Neptune",
};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item, planetas);
spinner.setAdapter(adapter);
escolher.setOnClickListener(view -> {
Double min_dist = -1.0, max_dist = -1.0;
String escolhido = spinner.getSelectedItem().toString();
if(escolhido.equals("Venus")) {min_dist = 39.79; max_dist = 259.71;}
if(escolhido.equals("Mars")) {min_dist = 55.65; max_dist = 399.58;}
if(escolhido.equals("Mercury")) {min_dist = 82.5; max_dist = 216.3;}
if(escolhido.equals("Sun")) {min_dist = 147.0; max_dist = 152.1;}
if(escolhido.equals("Jupiter")) {min_dist = 591.97; max_dist = 965.52;}
if(escolhido.equals("Saturn")) {min_dist = 1_204.28; max_dist = 1_652.48;}
if(escolhido.equals("Uranus")) {min_dist = 2_586.88; max_dist = 3_154.91;}
if(escolhido.equals("Pluto")) {min_dist = 4_293.37; max_dist = 7_523.53;}
if(escolhido.equals("Neptune")) {min_dist = 4_311.02; max_dist = 4_685.02;}
textDistMin.setText(min_dist.toString());
textDistMax.setText(max_dist.toString());
});
}
}