Android Spinners
Spinners nos fornecem uma maneira rápida de selecionar um valor de um conjunto de valores. Em um estado padrão, um Spinner mostra seu valor atual. Tocando no Spinner ele mostra um dropdown menu com todos os outros valores, onde o usuário pode escolher um novo valor.
Nesse tutorial estarei explicando como utilizar um Spinner, estarei utilizando o Android Studio 1.0.2, veja os passos que realizaremos neste tutorial.
- Criaremos uma MainActivity
- Adicionaremos um Spinner no activity_main.xml
- Utilizaremos o Spinner na MainActivity
- Mostraremos na tela o item selecionado no Spinner
Nosso projeto ficará assim:
Você pode adicionar um Spinner no seu layout com o Objeto Spinner. Você deve cria-lo no seu layout XML com o elemento
<Spinner>
. Por exemplo:<Spinner
android:id="@+id/planets_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
Outra forma de adicionar o Spinner no seu layout é arrastando para o seu layout a partir do editor gráfico do Android Studio.
Como nesse criaremos um Spinner com nomes de pessoas colocaremos no nosso activity_main.xml um TextView que terá o valor Nome: e o nosso Spinner que armazenará nossa lista de nomes .Abaixo o código do activity_main.xml.
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:padding="10dp"> <Spinner android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/spinner" android:layout_alignTop="@+id/textView" android:layout_toRightOf="@+id/textView" android:layout_toEndOf="@+id/textView" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Nomes: " android:id="@+id/textView" android:layout_marginTop="66dp" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginRight="10dp"/> </RelativeLayout>
Agora vamos trabalhar na nossa classe MainActivity.java, começaremos por criar um objeto do tipo Spinner e armazena-lo em uma variável chamada spinner. Neste tutorial criaremos um Spinner com nomes de Pessoas como mostrado anteriormente na imagem acima, para colocar estes nomes no nosso spinner precisaremos criar uma lista de nomes , podemos usar um array de Strings , ArrayList<String> etc. No nosso caso usaremos um array de Strings, após criarmos a nossa lista de nomes precisamos coloca-la dentro do nosso Spinner, porém o Spinner não aceita um array de String como parâmetro para definirmos como lista, então o que fazer? Sabemos que o Spinner aceita um adapter como parâmetro e é isso que daremos a ele. Vamos criar um ArrayAdapter de String e passar nossa lista de nomes dentro dele, então poderemos passar o ArrayAdapter como parâmetro no nosso Spinner. Veja o código abaixo.
MainActivity.java
package com.inforprogramm.aulaspinner; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ArrayAdapter; import android.widget.Spinner; public class MainActivity extends Activity { //Criamos a variavel spinner private Spinner spinner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //instanciamos o spinner que está no nosso activity_main.xml spinner = (Spinner) findViewById(R.id.spinner); //Criamos uma lista de Nomes String nomes [] = {"José","Paulo","Maria","Henrique","João Paulo","Fernanda","Leticia"}; //O spinner recebe um adapter que pode ser do tipo ArrayAdapter então criamos um ArrayAdapter e colocamos nossa lista dentro ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,nomes); //Agora definimos o adapter para nosso Spinner spinner.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Agora que já criamos nosso Spinner com sucesso vamos fazer com que cada vez que o usuário clique em um nome diferente na lista mostre-o na tela, para isso usaremos o método setOnItemSelectedListener() do Spinner, esse método executa determinado código que esteja dentro do método onItemSelected() cada vez que um item do Spinner for selecionado, no nosso caso usamos um método statico da classe Toast que serve para imprimir na tela uma mensagem, dessa forma tudo que devemos fazer é pegar o valor do Spinner que foi selecionado, usando o método getSelectedItem() do Spinner que retorna um Object então usamos o método toString() para converter-lo em String. Veja abaixo.
package com.inforprogramm.aulaspinner; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends Activity { //Criamos a variavel spinner private Spinner spinner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //instanciamos o spinner que está no nosso activity_main.xml spinner = (Spinner) findViewById(R.id.spinner); //Criamos uma lista de Nomes String nomes [] = {"José","Paulo","Maria","Henrique","João Paulo","Fernanda","Leticia"}; //O spinner recebe um adapter que pode ser do tipo ArrayAdapter então criamos um ArrayAdapter e colocamos nossa lista dentro ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,nomes); //Agora definimos o adapter para nosso Spinner spinner.setAdapter(adapter); //Criaremos uma acao para cada vez que um item seja selecionado no spinner spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //toda vez que um item for selecionado esse codigo será executado Toast.makeText(MainActivity.this, spinner.getSelectedItem().toString(), Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Baixar código fonte : Android Spinner
Nenhum comentário:
Postar um comentário