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 | @http://twitter.com/_rafaeltoledo Programação
<p>Ol&aacute; pessoal! Hoje, dando continuidade aos nossos tutoriais sobre desenvolvimento para Android, vamos continuar com a nossa aplica&ccedil;&atilde;o&nbsp;<strong>Meus Contatos</strong>. No post de hoje, vamos adicionar a op&ccedil;&atilde;o de categorizar o tipo de contato, mapeando-o como um enumerador na classe de modelo.</p> <p>Bom, sem mais delongas, vamos come&ccedil;ar a fazer a no nosso&nbsp;<em>layout</em>&nbsp;para abrigar essa categoriza&ccedil;&atilde;o. Adicionaremos alguns itens do tipo&nbsp;<strong>RadioButton</strong>&nbsp;(aqueles bot&otilde;es marcadores) em nosso formul&aacute;rio (<strong>arquivo/</strong><strong>layout/activity_<strong>meus_contatos.xml</strong></strong>). Adicione o&nbsp;<strong>TextView</strong>&nbsp;com a legenda do campo rec&eacute;m inserido e os itens&nbsp;<strong>RadioGroup</strong>&nbsp;e&nbsp;<strong>RadioButton</strong>, conforme o c&oacute;digo a seguir:</p> <p><code><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<br />    xmlns:tools="http://schemas.android.com/tools"<br />    android:layout_width="match_parent"<br />    android:layout_height="match_parent"<br />    tools:context=".MeusContatos" ><br /> <br />    <LinearLayout<br />        android:layout_width="match_parent"<br />        android:layout_height="wrap_content"<br />        android:layout_alignParentTop="true"<br />        android:orientation="vertical" ><br /> <br />        <TextView<br />            android:layout_width="wrap_content"<br />            android:layout_height="wrap_content"<br />            android:text="@string/nome" /><br /> <br />        <EditText<br />            android:id="@+id/nome"<br />            android:layout_width="fill_parent"<br />            android:layout_height="wrap_content"<br />            android:inputType="text" /><br /> <br />        <TextView<br />            android:layout_width="wrap_content"<br />            android:layout_height="wrap_content"<br />            android:text="@string/email" /><br /> <br />        <EditText<br />            android:id="@+id/email"<br />            android:layout_width="fill_parent"<br />            android:layout_height="wrap_content"<br />            android:inputType="textEmailAddress" /><br /> <br />        <TextView<br />            android:layout_width="wrap_content"<br />            android:layout_height="wrap_content"<br />            android:text="@string/tipo_contato" /><br /> <br />        <RadioGroup<br />            android:id="@+id/tipo_contato"<br />            android:layout_width="fill_parent"<br />            android:layout_height="wrap_content" ><br /> <br />            <RadioButton<br />                android:id="@+id/pessoal"<br />                android:layout_width="wrap_content"<br />                android:layout_height="wrap_content"<br />                android:text="@string/tipo_pessoal" /><br /> <br />            <RadioButton<br />                android:id="@+id/profissional"<br />                android:layout_width="wrap_content"<br />                android:layout_height="wrap_content"<br />                android:text="@string/tipo_profissional" /><br /> <br />            <RadioButton<br />                android:id="@+id/academico"<br />                android:layout_width="wrap_content"<br />                android:layout_height="wrap_content"<br />                android:text="@string/tipo_academico" /><br />        </RadioGroup><br />    </LinearLayout><br /> <br />    <Button<br />        android:id="@+id/salvar"<br />        android:layout_width="fill_parent"<br />        android:layout_height="wrap_content"<br />        android:layout_alignParentBottom="true"<br />        android:text="@string/salvar" /><br /> <br /></RelativeLayout></code></p> <p>Para o elemento&nbsp;<strong>RadioGroup</strong>, definimos o atributo identificador, no exemplo definido como&nbsp;<strong>tipo_contato</strong>, que ser&aacute; o meio pelo qual iremos acess&aacute;-lo no c&oacute;digo-fonte Java. Internos a ele, temos os elementos do tipo&nbsp;<strong>RadioButton</strong>. Em nosso exemplo, definimos as op&ccedil;&otilde;es&nbsp;<strong>Pessoal</strong>,&nbsp;<strong>Profissional</strong>&nbsp;e&nbsp;<strong>Acad&ecirc;mico</strong>. Tivemos tamb&eacute;m a adi&ccedil;&atilde;o de alguns valores ao arquivo&nbsp;<strong>values/strings.xml</strong>:</p> <p><code><?xml version="1.0" encoding="utf-8"?><br /><resources><br /> <br />    <string>Meus Contatos</string><br />    <string>Settings</string><br />    <string>Nome:</string><br />    <string>E-mail:</string><br />    <string>Salvar</string><br />    <string>Tipo de Contato:</string><br />    <string>Pessoal</string><br />    <string>Profissional</string><br />    <string>Acadêmico</string><br /> <br /></resources></code></p> <p>O pr&oacute;ximo passo &eacute; mapearmos estas op&ccedil;&otilde;es no c&oacute;digo-fonte Java. Primeiramente, precisamos modificar nossa classe&nbsp;<strong>Contato</strong>&nbsp;para abrigar o tipo. Vamos definir enumerador interno para estes tipos e em seguida criar um atributo interno desse tipo rec&eacute;m-criado:</p> <p><code>package net.rafaeltoledo.meuscontatos.model;<br /> <br />public class Contato {<br /> <br />    private String nome;<br />    private String email;<br />    private Tipo tipo;<br /> <br />    public String getNome() {<br />        return nome;<br />    }<br /> <br />    public void setNome(String nome) {<br />        this.nome = nome;<br />    }<br /> <br />    public String getEmail() {<br />        return email;<br />    }<br /> <br />    public void setEmail(String email) {<br />        this.email = email;<br />    }<br /> <br />    public Tipo getTipo() {<br />        return tipo;<br />    }<br /> <br />    public void setTipo(Tipo tipo) {<br />        this.tipo = tipo;<br />    }<br /> <br />    public static enum Tipo {<br />        PESSOAL,<br />        PROFISSIONAL,<br />        ACADEMICO<br />    }<br />}</code></p> <p>Vamos agora alterar o c&oacute;digo da nossa&nbsp;<strong>Activity</strong>, para obtermos a op&ccedil;&atilde;o selecionada pelo usu&aacute;rio. Dentro do m&eacute;todo&nbsp;<strong>onClick</strong>, vamos adicionar um trecho de c&oacute;digo puxando os dados do&nbsp;<strong>RadioGroup</strong>&nbsp;e verificando seu status de acordo com a op&ccedil;&atilde;o selecionada. O c&oacute;digo fica assim:</p> <p><code>@Override<br />public void onClick(View v) {<br />    EditText nome = (EditText) findViewById(R.id.nome);<br />    EditText email = (EditText) findViewById(R.id.email);<br /> <br />    contato.setNome(nome.getText().toString());<br />    contato.setEmail(email.getText().toString());<br /> <br />    RadioGroup tipoContato = (RadioGroup) findViewById(R.id.tipo_contato);<br /> <br />    switch (tipoContato.getCheckedRadioButtonId()) {<br />    case R.id.pessoal:<br />        contato.setTipo(Contato.Tipo.PESSOAL);<br />        break;<br />    case R.id.profissional:<br />        contato.setTipo(Contato.Tipo.PROFISSIONAL);<br />        break;<br />    case R.id.academico:<br />        contato.setTipo(Contato.Tipo.ACADEMICO);<br />        break;<br />    }<br />}</code></p> <p>Obtemos o elemento&nbsp;<strong>tipo_contato&nbsp;</strong>da mesma forma que fizemos para&nbsp;<strong>nome</strong>&nbsp;e&nbsp;<strong>email</strong>, utilizando o m&eacute;todo&nbsp;<strong>findViewById()</strong>. Logo ap&oacute;s isso, fazemos um&nbsp;<strong>switch</strong>&nbsp;com o conte&uacute;do do m&eacute;todo&nbsp;<strong>getCheckedRadioButtonId()</strong>, de acordo com o&nbsp;<strong>id</strong>&nbsp;de cada um dos bot&otilde;es definidos por n&oacute;s. Ao final, nosso formul&aacute;rio estar&aacute; assim:</p> <p class="wp-caption-text"><span class="img_editor"><img src="https://www.oficinadanet.com.br/imagens/post/9787/android-tutorial-06.png" alt="" /></span></p> <p>Bom pessoal, &eacute; isso! Espero que estejam gostando dos posts. Comentem, deixem sugest&otilde;es e participem do blog, afinal, ele &eacute; feito pra voc&ecirc;s leitores! At&eacute; a pr&oacute;xima!</p> <p>&nbsp;</p> <p style="text-align: center;"><strong>Arquivos do projeto para download:</strong><br /><a href="https://www.oficinadanet.com.br/imagens/post/9787/meuscontatos-v03.zip"><img src="https://www.oficinadanet.com.br/imagens/post/9787/botaodownloadoficina.jpg" alt="" /></a></p>

Mais sobre: guiaandroid
Share Tweet
Mais compartilhados
Comentários
AINDA NÃO SE INSCREVEU?

Vem ver os vídeos legais que
estamos produzindo no Youtube.