0% found this document useful (0 votes)
13 views

AVA2 -PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

AVA2 -PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

1

UNIVERSIDADE VEIGA DE ALMEIDA

Análise e Desenvolvimento de Sistemas EAD

Aluna: Vinicius Figueira Coelho Alves


Matrícula: 1220303904
DISCIPLINA: DESENVOLVIMENTO DE APLICAÇÕES MOBILE E
DISTRIBUÍDAS
Tutor: CLAUDIO FICO FONSECA

AVA 2
6
PROGRAMAÇÃO PARA DISPOSITIVOS MOVEIS

XML (VIEW) – ACTIVITY_MAIN

<?xml version="1.0" encoding="utf-8"?>


<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFC107"
tools:context=".MainActivity">

<Button
android:id="@+id/btSair"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="sair"
android:text="Sair"
android:textColor="#FF5722"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/btIncluir" />

<ListView
android:id="@+id/lista"
android:layout_width="411dp"
android:layout_height="300dp"
android:layout_marginTop="172dp"
android:layout_marginBottom="173dp"
app:layout_constraintBottom_toBottomOf="@+id/btIncluir"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/textView" />

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="CLIENTES CADASTRADOS"
android:textAlignment="center"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="18dp"
android:layout_marginBottom="16dp"
android:text="\@Daniel F. A. Feliciano"
7

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />

<ImageButton
android:id="@+id/btIncluir"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="56dp"
android:layout_marginBottom="80dp"
android:backgroundTintMode="multiply"
android:onClick="incluirCliente"
android:tint="#FF5722"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@android:drawable/ic_input_add" />
</androidx.constraintlayout.widget.ConstraintLayout>
8

CÓDIGO XML (VIEW) – ACTIVITY_TRATAR_CLIENTE

<?xml version="1.0" encoding="utf-8"?>


<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFC107"
tools:context=".TratarCliente">

<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:layout_marginBottom="4dp"
android:text="Crédito"
app:layout_constraintBottom_toTopOf="@+id/textView3"
app:layout_constraintStart_toStartOf="@+id/editText3" />

<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="63dp"
android:layout_marginTop="98dp"
android:ems="10"
android:hint="Apenas Letras e Espaços"
android:inputType="textCapWords"
android:maxLength="10"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:ems="10"
android:hint="Telefone Fixo ou Celular"
android:inputType="phone"
android:maxLength="11"
app:layout_constraintStart_toStartOf="@+id/textView5"
app:layout_constraintTop_toBottomOf="@+id/textView5" />

<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:layout_marginTop="8dp"
android:ems="10"
android:hint="Maior de 17 Anos"
android:inputType="number"
9

android:maxLength="3"
android:textAlignment="center"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@+id/textView8"
app:layout_constraintTop_toBottomOf="@+id/textView8" />

<EditText
android:id="@+id/editText4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:digits="0123456789."
android:ems="10"
android:hint="Valores Decimais"
android:inputType="numberDecimal"
app:layout_constraintStart_toStartOf="@+id/textView6"
app:layout_constraintTop_toBottomOf="@+id/textView6" />

<ImageButton
android:id="@+id/button2"
android:layout_width="62dp"
android:layout_height="56dp"
android:layout_marginTop="68dp"
android:layout_marginEnd="40dp"
android:layout_marginBottom="70dp"
android:background="#00F8F1F1"
android:onClick="excluir"
android:scaleX="2"
android:scaleY="2"
android:tint="#FF5722"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText4"
app:layout_constraintVertical_bias="0.0"
app:srcCompat="@android:drawable/ic_menu_delete" />

<ImageButton
android:id="@+id/voltar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="167dp"
android:layout_marginBottom="17dp"
android:background="#00FFFFFF"
android:onClick="voltar"
android:scaleX="2"
android:scaleY="2"
android:tint="#FF5722"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@android:drawable/ic_menu_revert" />

<ImageButton
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="35dp"
android:layout_marginTop="73dp"
android:layout_marginBottom="70dp"
android:backgroundTint="#00FFFFFF"
10

android:onClick="alterarInserir"
android:scaleX="2"
android:scaleY="2"
android:tint="#FF5722"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3"
app:srcCompat="@android:drawable/ic_menu_edit" />

<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="41dp"
android:text="R$"
android:textSize="30sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText3" />

<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="120dp"
android:layout_marginTop="24dp"
android:checked="false"
android:textAlignment="textStart"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@+id/button"
app:layout_constraintTop_toBottomOf="@+id/editText4" />

<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:text="Nome"
app:layout_constraintBottom_toTopOf="@+id/editText"
app:layout_constraintStart_toStartOf="@+id/editText" />

<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:text="Telefone com DDD"
app:layout_constraintStart_toStartOf="@+id/editText"
app:layout_constraintTop_toBottomOf="@+id/editText" />

<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="48dp"
android:layout_marginTop="16dp"
android:textAlignment="center"
11

android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="19dp"
android:text="Idade"
app:layout_constraintStart_toStartOf="@+id/editText2"
app:layout_constraintTop_toBottomOf="@+id/editText2" />

<ImageButton
android:id="@+id/incluir"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="11dp"
android:layout_marginBottom="8dp"
android:background="#00FFFFFF"
android:onClick="alterarInserir"
android:scaleX="2"
android:scaleY="2"
android:tint="#FF5722"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@+id/button"
app:layout_constraintEnd_toEndOf="@+id/button"
app:srcCompat="@android:drawable/ic_menu_add" />

<TextView
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="29dp"
app:layout_constraintStart_toStartOf="@+id/voltar"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
12
CÓDIGO JAVA (CONTROLLER) - MAINACTIVITY

package com.example.ava23;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.Iterator;
import java.util.List;

public class MainActivity extends AppCompatActivity implements


AdapterView.OnItemClickListener{
// Componente lista da view
ListView lista;
// Declaração da intent
Intent intent;
// Determina o código da intent
public static final int ACTIVITY_REQUEST_CLIENTE = 1;
// Declara o objeto de persistência (acesso ao banco)
private Cliente_DAO dao ;
// Vetor com os dados das disciplinas para apresentar na lista
private String[] clientes;
// Vetor com o id dos registros para identificar o registro
// para os casos de seleção na lista para alteração ou

// exclusão
private long[] idClientes;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lista = (ListView) findViewById(R.id.lista);
// Altera o título da janela da atividade
setTitle("AVA2 Aplicativos Móveis");
// Cria o objeto de acesso ao banco
dao = new Cliente_DAO(this);
// Abre o banco
dao.open();
// Determina que os itens da lista serão clicáveis e
// prepara o método de controle: onItemClick(..)
lista.setOnItemClickListener(this); // Clique no item
}
// Sempre que a atividade passar pelo método onResume, a lista
// será atualizada
@Override
protected void onResume () {
dao.open ();
super.onResume ();
// Prepara a lista que será exibida ao usuário na tela
// Busca no banco todos os registros
List<Cliente> listaClientes = dao.getAll();
13

// Define o tamanho dos vetores de disciplinas e id


// em função do tamanho (quantidade de registros) da tabela
clientes = new String[listaClientes.size()];
idClientes = new long[listaClientes.size()];
// Primeiro índice dos vetores
int i =0;
// Cria um objeto iterator para preencher o vetor de disciplinas
// com os dados dos registros
Iterator<Cliente> iterator = listaClientes.iterator();
// Para cada registro preencher os vetores
while (iterator.hasNext()) {
// Objeto cliente auxiliar
Cliente aux = new Cliente();
// Recebe no objeto auxiliar os dados de cada registro
aux = (Cliente) iterator.next();
// Preenche o vetor de disciplinas para visualização na lista
clientes[i] = aux.textoLista();
// Preenche o vetor de id para identificação do registro
// ao se escolher um elemento da lista para

// a alteração ou exclusão
idClientes[i] = aux.getId();
// Próximo item dos vetores
i++;
}
// Carrega o ArrayAdapter com os dados do vetor de clientes //
ArrayAdapter <String >
ArrayAdapter <String > adapter = new ArrayAdapter<String >(
this , android.R.layout.simple_list_item_1 , clientes );
//Clietnes?
// Preenche a lista com os dados do ArrayAdapter
lista.setAdapter( adapter );
}
// Fecha o recurso de acesso ao banco sempre que a atividade passar
// por uma pausa
@Override
protected void onPause () {
// Libera o recurso de acesso ao banco
dao.close ();
super.onPause ();
}
// Método para seleção de um item da lista para
// alteração ou exclusão (atende à interface: AdapterView.OnItemClickListener)
public void onItemClick(AdapterView<?> parent, View view, int position, long
ident) {
// Position é a posição do item na lista
// Armazena o índice do elemento escolhido na lista
long id = idClientes[position];
// Preparação da intent com previsão de retorno de dados
intent = new Intent(getApplicationContext(), TratarCliente.class);
// Passa os dados do item escolhido para a atividade de tratamento
intent.putExtra("acao", 0);
intent.putExtra("id", id);
// Chama a atividade
startActivity(intent);
}
// Método de controle para chamada da atividade secundária para inclusão
public void incluirCliente(View v){
14

// Intent para chamar a atividade secundária


intent = new Intent(getApplicationContext(), TratarCliente.class);
// Passa os dados do item escolhido para a atividade de tratamento
intent.putExtra("acao", -1);

intent.putExtra("id", 0L);
// Chama a atividade
startActivity(intent);
}
// Método para encerrar o aplicativo
public void sair(View v){
finish();
}
}
15

CÓDIGO JAVA (CONTROLLER) - TRATARCLIENTE

package com.example.ava23;

import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;

public class TratarCliente extends AppCompatActivity {


// Declaração dos componentes de tela
EditText ed1, ed2, ed3, ed4;
TextView aviso, ok;
ImageButton incluir, editar, excluir, voltar;
CheckBox ed5;
// Atributos de informações de acao: 0 : alteração ou exclusão
// -1 : inclusão
private int acao;
// Id do registro para alteração ou exclusão
// será usado com o método buscar para trazer os dados do registro
private long id;
@SuppressLint({"SetTextI18n", "Locale.US"})
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tratar_cliente);
editar = (ImageButton) findViewById(R.id.button);
incluir = (ImageButton) findViewById(R.id.incluir);
excluir = (ImageButton) findViewById(R.id.button2);
voltar = (ImageButton) findViewById(R.id.voltar);
ed1 = (EditText) findViewById(R.id.editText);
ed2 = (EditText) findViewById(R.id.editText2);
ed3 = (EditText) findViewById(R.id.editText3);
ed4 = (EditText) findViewById(R.id.editText4);
ed5 = (CheckBox) findViewById(R.id.checkBox);
aviso = (TextView) findViewById(R.id.textView7);
ok = (TextView) findViewById(R.id.ok);
// Recebe os dados da atividade principal
// e preenche a tela (view)
acao = getIntent().getExtras().getInt("acao");
id = getIntent().getExtras().getLong("id");

// Altera o título e prepara a tela


if (acao == -1) { //1
// Tela de inclusão
// Usa dados-padrão
setTitle("Inserir Cliente");

incluir.setVisibility(View.VISIBLE);
voltar.setVisibility(View.VISIBLE);

editar.setVisibility(View.INVISIBLE);
16

excluir.setVisibility(View.INVISIBLE);
excluir.setVisibility(View.GONE);
ed3.setText(String.format("%d", 18));
ed4.setText(String.format("%3.2f", 0.00));
ed5.setVisibility(View.VISIBLE);
ed5.setChecked(true);
ed5.setText("Ativo");

} else {
// Tela de alteração ou exclusão
setTitle("Alterar ou Excluir Cliente");
incluir.setVisibility(View.INVISIBLE);
incluir.setVisibility(View.GONE);
voltar.setVisibility(View.VISIBLE);
editar.setVisibility(View.VISIBLE);

excluir.setVisibility(View.VISIBLE);
// checkbox();

// Cria um objeto Cliente auxiliar para armazenar


// os dados do registro
Cliente aux = new Cliente();
// Cria o objeto de acesso ao banco
Cliente_DAO dao = new Cliente_DAO(this);
// Abre o banco
dao.open();
// Faz a consulta pelo id do registro para
// buscar os dados na tabela
aux = dao.buscar(id);

// Preenche os dados do registro na tela


ed1.setText(aux.getNome());
ed2.setText(aux.getTelefone());
ed3.setText(String.format("%d", aux.getIdade()));
ed4.setText(String.format("%3.2f", aux.getCredito()));

if(aux.getAtivo().matches("Ativo")){
ed5.setChecked(true);
ed5.setText("Ativo");

}else{
ed5.setChecked(false);
ed5.setText("Inativo");

// Libera o recurso de acesso ao banco de dados


dao.close();
}
}
public void checkbox(){
boolean teste = ed5.isChecked();
if(teste == true){
ed5.setText("ATIVO");

}else {
ed5.setText("INATIVO");
17

}
// Método para preparar os dados para retornar à atividade principal
public void alterarInserir(View v) {
aviso.setText("");
ok.setText("");
incluir.setVisibility(View.INVISIBLE);
incluir.setVisibility(View.GONE);
excluir.setVisibility(View.VISIBLE);
voltar.setVisibility(View.VISIBLE);
editar.setVisibility(View.VISIBLE);

if(ed5.isChecked()){
checkbox();
ed5.setText("Ativo");
}else {
checkbox();
ed5.setText("Inativo");
}

String idade1, credito1, nome, telefone, ativo;


double credito = 0;
int idade = 0;
int ok1 = 0;

// Pega os dados preenchidos na tela,


// para inclusão ou alteração
nome = ed1.getText().toString();
telefone = ed2.getText().toString();
ativo = ed5.getText().toString();
idade1 = ed4.getText().toString();
credito1 = ed4.getText().toString();
credito1 = String.format("0")+credito1;

//Tratamento dos Inputs

if(ed1.getText().length() > 3 && nome.matches("[A-z\\s]*")) {

}else{
//Valor referente a esse Input
ok1 += 1;

}
if(telefone.length() < 10) {
//Valor referente a esse Input
ok1 += 2;

if(ed3.getText().length() < 1) {
//Valor referente a esse Input
ok1 += 4;

}else{
idade = Integer.parseInt(ed3.getText().toString());
if(idade < 18){
18

//Valor referente a esse Input


ok1 += 4;
}

if(ed4.getText().length() < 1 || credito1.matches(".")) {


//Valor referente a esse Input
ok1 += 8;

}else{
//converte de “,” para “.”
credito1 = credito1.replace(",",".");
credito = Double.parseDouble(credito1);

// Tratamento das Mensagens de Erros dos Inputs


switch(ok1){
case 1:
aviso.setText(String.format("Verifique o campo NOME"));
break;
case 2:
aviso.setText(String.format("Verifique o campo TELEFONE"));
break;
case 3:
aviso.setText(String.format("Verifique os campos NOME e
TELEFONE"));
break;
case 4:
aviso.setText(String.format("Verifique o campo IDADE "));
break;
case 5:
aviso.setText(String.format("Verifique os campos NOME e IDADE"));
break;
case 6:
aviso.setText(String.format("Verifique os campos TELEFONE e
IDADE"));
break;
case 7:
aviso.setText(String.format("Verifique os campos NOME, TELEFONE e
IDADE"));
break;
case 8:
aviso.setText(String.format("Verifique o campo CRÉDITO"));
break;
case 9:
aviso.setText(String.format("Verifique os campos NOME e
CRÉDITO"));
break;
case 10:
aviso.setText(String.format("Verifique os campos TELEFONE e
CRÉDITO"));
break;
case 11:
aviso.setText(String.format("Verifique os campos NOME, TELEFONE e
CRÉDITO"));
break;
19

case 12:
aviso.setText(String.format("Verifique os campos IDADE e
CRÉDITO"));
break;
case 13:
aviso.setText(String.format("Verifique os campos NOME, IDADE e
CRÉDITO"));
break;
case 14:
aviso.setText(String.format("Verifique os campos TELEFONE, IDADE e
CRÉDITO"));
break;
case 15:
aviso.setText(String.format("Reveja todos os campos!"));
break;
default:
aviso.setText(String.format(""));
break;
}

if(ok1 == 0){

ok1 = 0; //reseta o contador de erros


// Cria o objeto de acesso ao banco
Cliente_DAO dao = new Cliente_DAO(this);
// Abre o banco
dao.open();

// Determina a ação
if (acao == -1) { // Ação de inserção
// Realiza a inclusão da disciplina na tabela
dao.inserir(nome, telefone, idade, credito, ativo);
} else { // Ação de alteração
// Realiza a alteração do registro correspondente na tabela
dao.alterar(id, nome, telefone, idade, credito, ativo);
}
// Libera o recurso de acesso ao banco
dao.close();
// Encerra a atividade, retornando à atividade principal
finish();
}
}
// Método para a exclusão de um registro de acordo com o id da disciplina
public void excluir(View v) {
aviso.setText("");
excluir.setVisibility(View.VISIBLE);
// Confere se é uma ação de alteração ou exclusão
if (acao == 0) {
// Cria o objeto de acesso ao banco
Cliente_DAO dao = new Cliente_DAO(this);
// Abre o banco
dao.open();
// Realiza a exclusão do registro por meio do id
dao.apagar(id);
// Libera o recurso de acesso ao banco
dao.close();
}
20

// Encerra a atividade, retornando à atividade principal


finish();
}
public void voltar(View v) {
// Encerra a atividade, retornando à atividade principal
finish();
}
}
21
CÓDIGOS JAVA (CLASSE) - CLIENTE

package com.example.ava23;

import android.annotation.SuppressLint;

public class Cliente {

// Definição dos atributos


private long id;
private String nome, ativo, telefone;
private double credito;
private int idade;

// Métodos de acesso (setters & getters)

public String getNome() {


return nome;
}
public void setNome(String nome) {

this.nome = nome;

public String getTelefone() {

return telefone;

}
public void setTelefone(String telefone) {
if (telefone.length() > 9 ) {
this.telefone = telefone;

}else{

this.telefone = "";
}

}
public double getCredito() {
return credito;

}
public void setCredito(double credito) {

this.credito = credito;

}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
if (idade > 17) {
this.idade = idade;
22

public String getAtivo() {


return ativo;
}
public void setAtivo(String ativo) {

this.ativo = ativo;

public long getId() {


return id;
}
public void setId(long id) {

this.id = id;

}
// Método construtor com definição dos valores-padrão
public Cliente() {
nome = "";
telefone = "";
idade = 18;
credito = 0.00;
ativo = "Ativo";
}
// Método de formatação dos dados para exibição na lista
@SuppressLint("DefaultLocale")
public String textoLista() {
String item;
item = getNome();
item += "\nTelefone: " + getTelefone();
item += "\t Idade: " + String.format("%d Anos ", getIdade());
item += "\nCrédito: " + String.format("R$ %3.2f ", getCredito());
item += "\t Status: " + getAtivo();;
return item;
}
}
23

CÓDIGO JAVA (CLASSE) - CLIENTEDAO

package com.example.ava23;

import java.util.ArrayList ;
import java.util.List ;

import android.content.ContentValues ;
import android.content.Context;
import android.database.Cursor ;
import android.database.SQLException ;
import android.database.sqlite.SQLiteDatabase ;

// Camada de dados (Persistência)


// Classe de definição para os acessos ao banco de dados

public class Cliente_DAO {


// Define um objeto banco de dados
private SQLiteDatabase database;
// Define as colunas da tabela
private String [] columns = { ClienteSQLiteOpenHelper.COLUNA_ID
,
ClienteSQLiteOpenHelper.COLUNA_NOME ,
ClienteSQLiteOpenHelper.COLUNA_TELEFONE ,
ClienteSQLiteOpenHelper.COLUNA_IDADE ,
ClienteSQLiteOpenHelper.COLUNA_CREDITO,
ClienteSQLiteOpenHelper.COLUNA_ATIVO };

private ClienteSQLiteOpenHelper sqliteOpenHelper ;


// Método construtor
public Cliente_DAO(Context context ) {

sqliteOpenHelper = new ClienteSQLiteOpenHelper(context);


}
// Método para abrir o recurso de banco de dados
public void open () throws SQLException {
database = sqliteOpenHelper.getWritableDatabase();
}
// Método para fechar o recurso de banco de dados
public void close() {
sqliteOpenHelper.close ();
}
// Método de inclusão de registro
public void inserir (String nome, String telefone, int idade, double credito,
String ativo) {
// Prepara os valores das colunas da tabela para a inserção
ContentValues values = new ContentValues();
values.put ( ClienteSQLiteOpenHelper.COLUNA_NOME, nome );
values.put ( ClienteSQLiteOpenHelper.COLUNA_TELEFONE, telefone );
values.put ( ClienteSQLiteOpenHelper.COLUNA_IDADE, String.valueOf(idade)
);
values.put ( ClienteSQLiteOpenHelper.COLUNA_CREDITO,
String.valueOf(credito) );
values.put ( ClienteSQLiteOpenHelper.COLUNA_ATIVO, String.valueOf(ativo)
);
// Efetua a inclusão com retorno do id do registro
24

long insertId = database.insert ( ClienteSQLiteOpenHelper.TABELA , null ,


values );
}
// Método para atualização de um registro da tabela
// Recebe os dados para a inserção
public void alterar(long id, String nome, String telefone, int idade, double
credito, String ativo){
// Prepara os dados para a atualização
ContentValues values = new ContentValues();
values.put ( ClienteSQLiteOpenHelper.COLUNA_NOME , nome );
values.put ( ClienteSQLiteOpenHelper.COLUNA_TELEFONE , telefone );
values.put ( ClienteSQLiteOpenHelper.COLUNA_IDADE , String.valueOf(idade)
);
values.put ( ClienteSQLiteOpenHelper.COLUNA_CREDITO ,
String.valueOf(credito) );
values.put ( ClienteSQLiteOpenHelper.COLUNA_ATIVO , String.valueOf(ativo)
);
// Efetua a alteração do registro, de acordo com o id do registro
database.update(ClienteSQLiteOpenHelper.TABELA ,
values,ClienteSQLiteOpenHelper.COLUNA_ID + "=" + id, null);
}
// Método para a exclusão de um registro
// Recebe o id do registro que será excluído
public void apagar ( long id ) {

// Exclui o registro a partir do id


database.delete ( ClienteSQLiteOpenHelper.TABELA ,
ClienteSQLiteOpenHelper.COLUNA_ID
+ " = " + id , null );
}
// Método de busca de registro a partir do id
// Busca os dados de cada registro a partir do id
// Retorna um objeto Cliente com os dados do registro
public Cliente buscar ( long id ) {
// Realiza a busca a partir do id do registro
// Usado para buscar os dados para a montagem da tela e
// para a alteração ou exclusão do registro
// O objeto cursor armazena os registros da consulta
// Como o filtro é o id, apenas um registro será selecionado
Cursor cursor = database.query( ClienteSQLiteOpenHelper.TABELA,
columns , ClienteSQLiteOpenHelper.COLUNA_ID + " = " + id,
null , null , null , null, null );
cursor.moveToFirst();
// Cria um objeto Cliente auxiliar para retornar o objeto
Cliente Cliente = new Cliente ();
// Preenche os dados do registro do banco
// nas propriedades do objeto auxiliar
Cliente.setId ( cursor.getLong (0) );
Cliente.setNome ( cursor.getString (1) );
Cliente.setTelefone ( cursor.getString (2) );
Cliente.setIdade ( cursor.getInt (3) );
Cliente.setCredito ( cursor.getDouble (4) );
Cliente.setAtivo ( cursor.getString (5) );
// Fecha o recurso do cursor
cursor.close();
// Retorna o objeto auxiliar do tipo Cliente
return Cliente ;
}
25

// Método de montagem da lista de registros das Clientes


// Monta a lista de Clientes para a carga da lista na tela principal
// O método retornará uma lista com todas as Clientes armazenadas
// no banco
public List <Cliente> getAll () {
// Prepara um Arraylist para retorno dos registros armazenado no banco
List <Cliente> Clientes = new ArrayList <Cliente>() ;
// Objeto cursor para armazenar temporariamente os dados
// retornados pela consulta
Cursor cursor = database.query ( ClienteSQLiteOpenHelper .
TABELA , columns , null , null , null , null , null, null );
// Passa o ponteiro para o primeiro registro do cursor
cursor.moveToFirst ();
// Para cada registro, os dados da tabela são copiados para
// o objeto Cliente da lista
while (!cursor.isAfterLast ()) {
Cliente cliente = new Cliente ();
cliente.setId ( cursor.getLong (0) );
cliente.setNome ( cursor.getString (1) );
cliente.setTelefone ( cursor.getString (2) );
cliente.setIdade ( cursor.getInt (3) );
cliente.setCredito ( cursor.getDouble (4) );
cliente.setAtivo ( cursor.getString (5) );
Clientes.add ( cliente );
cursor.moveToNext();
}
// Fecha o cursor
cursor.close ();
// Retorna à lista de clientes
return Clientes;
}
}
26

CÓDIGO JAVA (CLASSE) – CLIENTESQLITEOPENHELPER

package com.example.ava23;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite . SQLiteOpenHelper;

public class ClienteSQLiteOpenHelper extends SQLiteOpenHelper {


// Definição da tabela e dos atributos
// Os espaços antes e depois dos nomes são importantes,
// pois será criada uma QUERY (consulta) com esses identificadores

public static final String TABELA = " Cliente ";


public static final String COLUNA_ID = " id ";
public static final String COLUNA_NOME = " nome ";
public static final String COLUNA_TELEFONE = " telefone ";
public static final String COLUNA_IDADE = " idade ";
public static final String COLUNA_CREDITO = " credito ";
public static final String COLUNA_ATIVO = " ativo ";
// Define o nome do banco de dados
private static final String DATABASE_NAME = "clientes.db";
// Define a versão do banco
// O valor deve ser incrementado somente em casos de alterações
// na estrutura do banco (tabelas e atributos)
private static final int DATABASE_VERSION = 4;
// String de criação da tabela no banco de dados
private static final String CRIAR_BANCO = " create table "
+ TABELA + "("
+ COLUNA_ID + " integer primary key autoincrement , "
+ COLUNA_NOME + " text not null , "
+ COLUNA_TELEFONE + " text not null , "
+ COLUNA_IDADE + " integer not null , "
+ COLUNA_CREDITO + " double not null ,"
+ COLUNA_ATIVO + " integer not null ) ;";
// Método construtor da classe para criação ou atualização do banco
public ClienteSQLiteOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Cria o banco de dados, caso não exista
@Override
public void onCreate ( SQLiteDatabase database ) {
database.execSQL ( CRIAR_BANCO );
}
// Atualiza o banco de dados, caso seja uma nova versão
@Override
public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) {
db. execSQL (" DROP TABLE IF EXISTS " + TABELA );
onCreate (db);
}
}
27
4 TESTES

Tela Inicial Tela de Cadastro com Alguns Valores Pré-definidos

Tratamentos de Exceções dos Inputs

Nome e Telefone Idade e Crédito


28

Todos os Inputs

Cliente Cadastrado Editando Cliente Crédito e Status Alterados


29

Segundo Cliente Cadastrado Primeiro Cliente Excluído


30

You might also like