Tutorial Android 4 #5 – Aprimorando o Formulário

Padrão

Olá pessoal! Hoje, dando continuidade aos nossos tutoriais sobre desenvolvimento para Android, vamos continuar com a nossa aplicação Meus Contatos. No post de hoje, vamos adicionar a opção de categorizar o tipo de contato, mapeando-o como um enumerador na classe de modelo.

Bom, sem mais delongas, vamos começar a fazer a no nosso layout para abrigar essa categorização. Adicionaremos alguns itens do tipo RadioButton (aqueles botões marcadores) em nosso formulário (arquivo layout/activity_meus_contatos.xml). Adicione o TextView com a legenda do campo recém inserido e os itens RadioGroup e RadioButton, conforme o código a seguir:

<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"
    tools:context=".MeusContatos" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/nome" />

        <EditText
            android:id="@+id/nome"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:inputType="text" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/email" />

        <EditText
            android:id="@+id/email"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:inputType="textEmailAddress" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/tipo_contato" />

        <RadioGroup
            android:id="@+id/tipo_contato"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <RadioButton
                android:id="@+id/pessoal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/tipo_pessoal" />

            <RadioButton
                android:id="@+id/profissional"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/tipo_profissional" />

            <RadioButton
                android:id="@+id/academico"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/tipo_academico" />
        </RadioGroup>
    </LinearLayout>

    <Button
        android:id="@+id/salvar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="@string/salvar" />

</RelativeLayout>

Para o elemento RadioGroup, definimos o atributo identificador, no exemplo definido como tipo_contato, que será o meio pelo qual iremos acessá-lo no código-fonte Java. Internos a ele, temos os elementos do tipo RadioButton. Em nosso exemplo, definimos as opções PessoalProfissional e Acadêmico. Tivemos também a adição de alguns valores ao arquivo values/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Meus Contatos</string>
    <string name="menu_settings">Settings</string>
    <string name="nome">Nome:</string>
    <string name="email">E-mail:</string>
    <string name="salvar">Salvar</string>
    <string name="tipo_contato">Tipo de Contato:</string>
    <string name="tipo_pessoal">Pessoal</string>
    <string name="tipo_profissional">Profissional</string>
    <string name="tipo_academico">Acadêmico</string>

</resources>

O próximo passo é mapearmos estas opções no código-fonte Java. Primeiramente, precisamos modificar nossa classe Contato para abrigar o tipo. Vamos definir enumerador interno para estes tipos e em seguida criar um atributo interno desse tipo recém-criado:

package net.rafaeltoledo.meuscontatos.model;

public class Contato {

	private String nome;
	private String email;
	private Tipo tipo;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Tipo getTipo() {
		return tipo;
	}

	public void setTipo(Tipo tipo) {
		this.tipo = tipo;
	}

	public static enum Tipo {
		PESSOAL,
		PROFISSIONAL,
		ACADEMICO
	}
}

Vamos agora alterar o código da nossa Activity, para obtermos a opção selecionada pelo usuário. Dentro do método onClick, vamos adicionar um trecho de código puxando os dados do RadioGroup e verificando seu status de acordo com a opção selecionada. O código fica assim:

@Override
public void onClick(View v) {
	EditText nome = (EditText) findViewById(R.id.nome);
	EditText email = (EditText) findViewById(R.id.email);

	contato.setNome(nome.getText().toString());
	contato.setEmail(email.getText().toString());

	RadioGroup tipoContato = (RadioGroup) findViewById(R.id.tipo_contato);

	switch (tipoContato.getCheckedRadioButtonId()) {
	case R.id.pessoal:
		contato.setTipo(Contato.Tipo.PESSOAL);
		break;
	case R.id.profissional:
		contato.setTipo(Contato.Tipo.PROFISSIONAL);
		break;
	case R.id.academico:
		contato.setTipo(Contato.Tipo.ACADEMICO);
		break;
	}
}

Obtemos o elemento tipo_contato da mesma forma que fizemos para nome e email, utilizando o método findViewById(). Logo após isso, fazemos um switch com o conteúdo do método getCheckedRadioButtonId(), de acordo com o id de cada um dos botões definidos por nós. Ao final, nosso formulário estará assim:

clique para ampliar

Pra quem não conseguiu acompanhar ou teve problemas, o projeto pode ser baixado aqui.

Bom pessoal, é isso! Espero que estejam gostando dos posts. Comentem, deixem sugestões e participem do blog, afinal, ele é feito pra vocês leitores!

Até a próxima!

Um comentário sobre “Tutorial Android 4 #5 – Aprimorando o Formulário

Deixe uma resposta