05 - Aprimorando um formulário no Android [Guia #dev Android]

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.

Por Programação Pular para comentários
05 - Aprimorando um formulário no Android [Guia #dev Android]

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:

? ?xmlns:tools="http://schemas.android.com/tools"
? ?android:layout_width="match_parent"
? ?android:layout_height="match_parent"
? ?tools:context=".MeusContatos" >

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

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

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

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

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

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

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

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

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

? ? ? ? ? ? ? ? ? ? ? ? ? ?android:id="@+id/academico"
? ? ? ? ? ? ? ?android:layout_width="wrap_content"
? ? ? ? ? ? ? ?android:layout_height="wrap_content"
? ? ? ? ? ? ? ?android:text="@string/tipo_academico" />
? ? ? ?
? ?

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

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:




? ?Meus Contatos
? ?Settings
? ?Nome:
? ?E-mail:
? ?Salvar
? ?Tipo de Contato:
? ?Pessoal
? ?Profissional
? ?Acad?mico

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:

05 - Aprimorando um formulário no Android [Guia #dev Android]

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!

 

Arquivos do projeto para download:
05 - Aprimorando um formulário no Android [Guia #dev Android]

Mais sobre: guiaandroid
Compartilhe com seus amigos:
Rafael Toledo
Rafael Toledo Bacharel em Sistemas de Informação, caiu no mundo da programação meio sem querer mas acabou gostando da brincadeira. Micro-empresário, nas (poucas) horas vagas, aventura-se entre um joystick e uma guitarra. Desenvolve principalmente para web e mobile. Talvez um pouco de gamedev também.
FACEBOOK // TWITTER: @http://twitter.com/_rafaeltoledo
Quer conversar com o(a) Rafael, comente:
Carregar comentários
Últimas notícias