domingo, 18 de março de 2012

Desenvolvendo uma aplicação de cadastro


Agora para encerrar, vamos desenvolver uma aplicação de cadastro. Essa
aplicação consiste em um cadastro de pessoas onde posso cadastrar dados
como: Nome, Profissão e Idade. Essa aplicação vai fazer uso de três layouts:

O layout principal: Esse layout dará acesso ao
layout de cadastro e o
layout de visualização de dados

O layout de cadastro: Nesse layout é onde será efetuado o cadastro dos
dados da pessoa.

O layout de visualização de dados: Nesse layout é onde serão visualizados
os dados cadastrados. Se nenhum dado foi cadastrado, será exibida uma
mensagem informando essa situação.

Nessa aplicação, para armazenar os dados, eu faço um de uma estrutura
de dados FIFO ou Fila. Nessa estrutura, os dados são armazenados em
seqüência, e acessados em seqüência , ou seja, o primeiro dado a entrar será o
primeiro a ser exibido.

Bom, vamos construir a nossa aplicação. Crie um novo projeto com os
dados abaixo:

Project Name: ProjetoAppCadastro

Package Name : com.android.appcadastro

Activity Name: AppCadastro

Application Name: Aplicação de Cadastros

Dentro da pasta
material, ela se chama

Agora no arquivo

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<ImageView android:id="@+id/imagebutton"
android:src="@drawable/profile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bem vindo a aplicação de Cadastro de Pessoas. Este é
um pequeno programa de demonstração de cadastro. Selecione uma das
opções abaixo:"
/>
<Button android:id="@+id/btcadpess"
android:text="Cadastrar Pessoas"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button android:id="@+id/btlistpess"
android:text="Listar pessoas cadastradas"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>

Dentro da pasta
seguinte código:
“res/layout” , crie um arquivo chamado cadastro.xml com o

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView android:id="@+id/imagebutton"
android:src="@drawable/profile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Módulo de cadastro. Cadastre seus dados abaixo:"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nome:"
/>
<EditText android:id ="@+campo/nome"
android:text=""
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Profissão:"
/>
<EditText android:id ="@+campo/profissao"
android:text=""
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Idade:"
/>
<EditText android:id ="@+campo/idade"
android:text=""
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+cadastro/btcadastro"
android:text="Cadastrar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+cadastro/btvoltar"
android:text="Voltar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>

Agora dentro da pasta
“res/layout” , crie um arquivo chamado
listacadastros.xml
com o seguinte código:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView android:id="@+id/imagebutton"
android:src="@drawable/profile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:textSize="20sp"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lista das pessoas cadastradas."
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:textSize="20sp"
android:textColor="#FFFF00"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nome:"
/>
<TextView android:id ="@+field/nome"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:text=""
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:textSize="20sp"
android:textColor="#FFFF00"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Profissão:"
/>
<TextView android:id ="@+field/profissao"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:text=""
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:textSize="20sp"
android:textColor="#FFFF00"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Idade:"
/>
<TextView android:id ="@+field/idade"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:text=""
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+lista/btvoltar"
android:text="Voltar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+lista/btanterior"
android:text="Anterior"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+lista/btproximo"
android:text="Proximo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>

Agora no arquivo AppCadastro.java, coloque o seguinte código:

package
com.android.appcadastro;
import
android.app.Activity;
import
android.os.Bundle;
import
android.widget.*;
import
android.view.*;
public class
AppCadastro extends Activity {
/** Called when the activity is first created. */
Registro
EditText
pri,reg,ult,aux;ednome,edprof,edidade;
int
numreg,pos;
void
setContentView(R.layout.
Button btcadpess = (Button) findViewById(R.id.
Button btlistapess = (Button) findViewById(R.id.
btcadpess.setOnClickListener(
btcadpess);btlistpess);new View.OnClickListener(){
public void
CarregaTelaCadastro();
}});
btlistapess.setOnClickListener(
new View.OnClickListener(){
public void
CarregaListaPessoas();
}});
}
onClick(View arg0){
void
setContentView(R.layout.
Button btcadastrar = (Button)
findViewById(R.cadastro.
Button btvoltar = (Button) findViewById(R.cadastro.
btcadastrar.setOnClickListener(
CarregaTelaCadastro() {cadastro);btcadastro);btvoltar);new View.OnClickListener(){
public void
onClick(View arg0){
try
{reg
ednome
= (EditText)findViewById(R.campo.nome);
edprof
= (EditText)findViewById(R.campo.profissao);
edidade
= (EditText)findViewById(R.campo.idade);
reg
.nome = ednome.getText().toString();
reg
.profissao = edprof.getText().toString();
reg
.idade = edidade.getText().toString();
if
(pri==null)
pri
=reg;
reg
.Ant = ult;
if
(ult==null)
ult
=reg;
else
{
ult
.Prox = reg;
ult
}
=reg;
numreg
showAlert(
++;"Aviso", 0,"Cadastro efetuado com sucesso", "OK",
false
}
);
catch
showAlert(
}}
});
btvoltar.setOnClickListener(
new View.OnClickListener(){public void
CarregaTelaPrincipal();
}
});
}
void
CarregaListaPessoas() {
if
showAlert(
(numreg==0) {"Aviso", 0,"Nenhum registro cadastrado", "OK",
false
CarregaTelaPrincipal();
);
return
}
setContentView(R.layout.
;listacadastrados);
pos
=1;
aux
TextView fnome = (TextView)findViewById(R.field.
TextView fidade = (TextView)findViewById(R.field.
TextView fprof = (TextView)findViewById(R.field.
Button btanterior = (Button) findViewById(R.lista.
Button btproximo = (Button) findViewById(R.lista.
Button btvoltar = (Button) findViewById(R.lista.
fnome.setText(
fidade.setText(
fprof.setText(
btvoltar.setOnClickListener(
new View.OnClickListener(){
public void
CarregaTelaPrincipal();
}
});
btanterior.setOnClickListener(
onClick(View arg0){new View.OnClickListener(){
public void
onClick(View arg0){
if
(pos==1)
return
;
pos
--;
aux
TextView fnome = (TextView)findViewById(R.field.
TextView fidade =
(TextView)findViewById(R.field.
TextView fprof =
(TextView)findViewById(R.field.
fnome.setText(
fidade.setText(
fprof.setText(
}
});
btproximo.setOnClickListener(
=aux.Ant;nome);idade);profissao);aux.nome);aux.idade);aux.profissao);new View.OnClickListener(){
public void
onClick(View arg0){
if
(pos==numreg)
return
;pos
aux
TextView fnome = (TextView)findViewById(R.field.
TextView fidade =
(TextView)findViewById(R.field.
TextView fprof =
(TextView)findViewById(R.field.
fnome.setText(
fidade.setText(
fprof.setText(
}
});
}
=aux.Prox;nome);idade);profissao);aux.nome);aux.idade);aux.profissao);
public void
onCreate(Bundle icicle) {
super
.onCreate(icicle);
numreg
=0;
pri
CarregaTelaPrincipal();
}}

Agora no mesmo local onde se encontra o arquivo AppCadastro.java (no
pacote com.android.appcadastro), você vai criar uma classe Chamada Registro.

Depois de criar a classe, coloque o código que é exibido abaixo:

package
com.android.appcadastro;
public class
String
String
String
Registro
Registro
}
Registro {nome;profissao;idade;Prox;Ant;

Agora vamos analisar aos poucos os códigos dessa aplicação. Observe
que nessa aplicação ou possuo três métodos: um método chamado
CarregaTelaPrincipal
método

Vamos analisar alguns códigos do método
observar nessa aplicação, que eu declarei quatro variáveis chamadas
, responsável por carregar o layout da tela principal. OCarregaTelaCadastro é responsável por carregar a tela de cadastro.CarregaTelaCadastro. Se vocêpri,ult e
reg
do primeiro registro. A variável
variável
como uma variável auxiliar.

É com a utilização essas variáveis que faço o cadastro dos dados das
pessoas. Vamos para o evento
método
click do botão btcadastrar situado dentro doCarregaTelaCadastro e analisar algumas linhas de código. A linha:

reg
= new Registro();

Cria uma nova instância da classe da classe
As linhas:
“Registro” e coloca em .”reg”.

reg
.nome = ednome.getText().toString();
reg
.profissao = edprof.getText().toString();
reg
.idade = edidade.getText().toString();
Gravam os dados dos campos no objeto
“reg”. Já as linhas abaixo:
if
(pri==null)
pri
=reg;
reg
.Ant = ult;
if
(ult==null)
ult
=reg;
else
{
ult
.Prox = reg;
ult
}

Fazem todo o processo de armazenamento dos dados.

Agora vamos para o método
chamado, é feita uma verificação se há dados cadastrados. Se não houver
dados cadastrados, será exibida uma mensagem indicando essa situação e
você será retornado a tela principal. Vou comentar algumas linhas. A linha:
CarregaListaPessoas. Quando esse método é

aux
=pri;

Retorna para a variável
armazenado em
“aux” o endereço do primeiro registro, que está“pri” . Já as linhas:

fnome.setText(
fidade.setText(
fprof.setText(
aux.nome);aux.idade);aux.profissao);

Joga as informações obtidas (nome, idade e profissão) para os campos
(TextViews), para que eles possam ser exibidas.

Vamos agora para o evento
registros anteriores. Antes de voltar um registro, verifico se eu me encontro no
primeiro registro pela condição:
click do botão btanterior. Esse botão mostra os

if
(pos==1)

Se a condição for verdadeira, saio do evento, senão, continuo executando
as instruções. A linha:

aux
=aux.Ant;

Retorna para
executados instruções para que os dados possam ser exibidos.

Já no evento
registro, verifico se já está no último registro pela instrução:
click do botão btproximo, antes de passar para o próximo

if
(pos==numreg)

Se a condição for verdadeira, saio do evento, senão, continuo executando
as instruções. A linha:

aux
=aux.Prox;

Retorna para
executados instruções para que os dados possam ser exibidos.

Agora vamos no arquivo de layout
algumas propriedades interessantes. Se você observar, algumas TextViews
possuem um atributo chamado android.textColor e android:textSize, esses
atributos definem a cor e o tamanho do texto respectivamente.

Bom, vamos executar a nossa aplicação ?

Desenvolvendo uma aplicação de cadastro