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" >
<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" />
<Button
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 Pessoal, Profissional 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:
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!
Siga o Oficina da Net no G o o g l e News e receba alertas e as principais notícias sobre tecnologia, smartphones, ciência, entretenimento digital e plataforma de streamings.
😕 Poxa, o que podemos melhorar?
😃 Boa, seu feedback foi enviado!
✋ Você já nos enviou um feedback para este texto.