<p>Olá pessoal! Hoje, dando continuidade aos nossos tutoriais sobre desenvolvimento para Android, vamos continuar com a nossa aplicação <strong>Meus Contatos</strong>. No post de hoje, vamos adicionar a opção de categorizar o tipo de contato, mapeando-o como um enumerador na classe de modelo.</p> <p>Bom, sem mais delongas, vamos começar a fazer a no nosso <em>layout</em> para abrigar essa categorização. Adicionaremos alguns itens do tipo <strong>RadioButton</strong> (aqueles botões marcadores) em nosso formulário (<strong>arquivo/</strong><strong>layout/activity_<strong>meus_contatos.xml</strong></strong>). Adicione o <strong>TextView</strong> com a legenda do campo recém inserido e os itens <strong>RadioGroup</strong> e <strong>RadioButton</strong>, conforme o có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 <strong>RadioGroup</strong>, definimos o atributo identificador, no exemplo definido como <strong>tipo_contato</strong>, que será o meio pelo qual iremos acessá-lo no código-fonte Java. Internos a ele, temos os elementos do tipo <strong>RadioButton</strong>. Em nosso exemplo, definimos as opções <strong>Pessoal</strong>, <strong>Profissional</strong> e <strong>Acadêmico</strong>. Tivemos também a adição de alguns valores ao arquivo <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óximo passo é mapearmos estas opções no código-fonte Java. Primeiramente, precisamos modificar nossa classe <strong>Contato</strong> para abrigar o tipo. Vamos definir enumerador interno para estes tipos e em seguida criar um atributo interno desse tipo recé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ódigo da nossa <strong>Activity</strong>, para obtermos a opção selecionada pelo usuário. Dentro do método <strong>onClick</strong>, vamos adicionar um trecho de código puxando os dados do <strong>RadioGroup</strong> e verificando seu status de acordo com a opção selecionada. O có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 <strong>tipo_contato </strong>da mesma forma que fizemos para <strong>nome</strong> e <strong>email</strong>, utilizando o método <strong>findViewById()</strong>. Logo após isso, fazemos um <strong>switch</strong> com o conteúdo do método <strong>getCheckedRadioButtonId()</strong>, de acordo com o <strong>id</strong> de cada um dos botões definidos por nós. Ao final, nosso formulário estará 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, é 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!</p> <p> </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>