Buscar

AVA2 NOTA 82 - Programacao Para Dispositivos Moveis - UVA UNIJORGE

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE VEIGA DE ALMEIDA 
 
 
 
 
SISTEMAS DE INFORMAÇÃO 
 
 
 
 
 
Programação Para Dispositivos Móveis 
 
 
AVA2 
 
 
Professor Thiago Alberto Ramos Gabriel 
 
 
 
 
Aluna: Elen Pires de Araújo 
Mat.: 20203301257 
 
 
 
 
 
 
 
 
Nova Iguaçu 
Setembro de 2021 
ENUNCIADO 
Crie um aplicativo Android para trabalhar com uma base de dados com uma tabela 
para persistência de dados de um objeto escolhido por você. 
O objeto deve ser definido por meio de uma classe própria, com: 
● O mínimo de cinco atributos (com uso de três diferentes tipos de dados) 
mais o atributo id (long). 
● Pelo menos um método construtor. 
● Métodos de acesso (setters & getters) para todos os atributos. 
● Outros métodos que sejam necessários. 
A aplicação deverá tratar a inclusão, alteração e exclusão dos registros, além de 
tratar o acesso, abertura e fechamento do recurso do banco de dados do SQLite, 
com o uso da arquitetura em três camadas. 
O aplicativo deverá apresentar os dados dos objetos armazenados por meio de uma 
lista (ListView) e apresentar as funcionalidades de inclusão, exclusão e alteração, 
que podem ser realizadas de acordo com a sua escolha. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
INTRODUÇÃO 
 
O projeto Cadastro de Animais é funcional, como mostrado no vídeo disponível no 
link: https://youtu.be/skX2mGYaDB0 . O código completo está disponível no Github, 
link do repositório: https://github.com/elenaraujo/mobile-crud . 
 
Para facilitar a correção disponibilizei cada arquivo .java e .xml do projeto no Gist, 
seguem os links: 
 
Activity principal da lista de animais: 
ListarAnimaisActivity.java 
activity_listar_animais.xml 
 
Activity de cadastro (criação/atualização) de animais: 
CadastroAnimalActivity.java 
activity_cadastro_animal.xml 
 
Modelo Animal, DAO file e arquivo de conexão com o banco: 
Animal.java 
AnimalDAO.java 
Conexao.java 
 
Adaptador para exibir os dados da lista de forma customizada para esta 
aplicação, com nome, espécie, idade, raça e peso de cada animal: 
AnimalAdapter.java 
item.xml 
 
Menu com as opções “Cadastro” (ícone de “+” verde) e “Consulta” (ícone de 
lupa): 
menu_principal.xml 
 
Menu com as opções “Excluir” e “Atualizar” para cada item da listagem: 
menu_contexto.xml 
 
https://youtu.be/skX2mGYaDB0
https://github.com/elenaraujo/mobile-crud
https://gist.github.com/elenaraujo/f82a664a6817ba66bfb683a397f4bcbc
https://gist.github.com/elenaraujo/efbc094db79830b470f17a54460d06a6
https://gist.github.com/elenaraujo/d70ddae81f15b8e5cc24ad6faaaa473e
https://gist.github.com/e249b3630a923b529350e5605a70df43
https://gist.github.com/beda57371f300e244706fab1fbe86e60
https://gist.github.com/614b7de968f401ee25a1a78435dab32d
https://gist.github.com/00d428238ebf6f378fc01a9c3e4bfb28
https://gist.github.com/3779a285bf4ce40a2a6447384b905c8a
https://gist.github.com/b19ca8e1892ab3c7cc7284559152e27b
https://gist.github.com/771b327a78e8fa1c26d8fff3b4242bde
https://gist.github.com/94cfbf77e4ccbd955c9146a097de5c25
PRINTS DE TELA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CÓDIGO 
 
ListarAnimaisActivity.java 
package com.example.cadastroanimal ; 
 
import androidx.appcompat.app.AppCompatActivity; 
 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.ContextMenu; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.SearchView; 
 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Locale; 
 
// Activity Principal, que é exibida ao abrir o App. 
// Mostra uma listagem com os itens cadastrados 
public class ListarAnimaisActivity extends AppCompatActivity { 
 
 private ListView listView; 
 private AnimalDAO dao; 
 private List <Animal> animais; 
 private List <Animal> animaisFiltrados = new ArrayList <>(); 
 
 @ Override 
 protected void onCreate ( Bundle savedInstanceState ) { 
 super . onCreate (savedInstanceState); 
 setContentView (R.layout.activity_listar_animais); 
 
 listView = findViewById ((R.id.lista_animais)); 
 dao = new AnimalDAO ( this ); 
 dao. open (); 
 animais = dao. obterTodos (); 
 animaisFiltrados. addAll (animais); 
 
 AnimalAdapter adaptador = new AnimalAdapter ( this , 
animaisFiltrados); 
 listView. setAdapter ((adaptador)); 
 
 registerForContextMenu (listView); 
 dao. close (); 
 } 
 
 public boolean onCreateOptionsMenu ( Menu menu ) { 
 MenuInflater i = getMenuInflater (); 
 i. inflate (R.menu.menu_principal, menu); 
 
 SearchView sv = (SearchView) 
menu. findItem (R.id.app_bar_search). getActionView (); 
 sv. setOnQueryTextListener ( new SearchView. OnQueryTextListener () 
{ 
 @ Override 
 public boolean onQueryTextSubmit ( String s) { 
 return false ; 
 } 
 
 @ Override 
 public boolean onQueryTextChange ( String s) { 
 procuraAnimal (s); 
 return false ; 
 } 
 }); 
 return true ; 
 } 
 
 public void onCreateContextMenu ( ContextMenu menu , View v , 
ContextMenu . ContextMenuInfo menuInfo ) { 
 super . onCreateContextMenu (menu, v, menuInfo); 
 MenuInflater i = getMenuInflater (); 
 i. inflate (R.menu.menu_contexto, menu); 
 } 
 
 // Método de busca pelo nome do animal, ao clicar no ícone de lupa 
 public void procuraAnimal ( String nome ) { 
 animaisFiltrados. clear (); 
 for ( Animal a : animais) { 
 if (a. getNome (). toLowerCase (). contains (nome. toLowerCase ())) 
{ 
 animaisFiltrados. add (a); 
 } 
 } 
 listView. invalidateViews (); 
 } 
 
 // Método de exclusão do animal. O botão de exclusão aparece ao 
pressionar em cima de cada 
 // objeto da lista. 
 public void excluir ( MenuItem item ) { 
 AdapterView . AdapterContextMenuInfo menuInfo = 
 (AdapterView.AdapterContextMenuInfo)item. getMenuInfo (); 
 
 final Animal animalExcluir = 
animaisFiltrados. get (menuInfo.position); 
 
 AlertDialog dialog = new AlertDialog. Builder ( this ) 
 . setTitle ( " Atenção " ) 
 . setMessage ( " Realmente deseja excluir o animal? " ) 
 . setNegativeButton ( " Não " , null ) 
 . setPositiveButton ( " Sim " , new 
DialogInterface. OnClickListener () { 
 @ Override 
 public void onClick ( DialogInterface dialogInterface, 
int i) { 
 animaisFiltrados. remove ((animalExcluir)); 
 animais. remove (animalExcluir); 
 dao. open (); 
 dao. excluir (animalExcluir); 
 dao. close (); 
 listView. invalidateViews (); 
 } 
 }). create (); 
 dialog. show (); 
 } 
 
 // Método que executa a Activity CadastroAnimal, para que o usuário 
possa preencher os dados 
 // de um novo animal a ser registrado 
 public void cadastrar ( MenuItem item ) { 
 Intent it = new Intent ( this , CadastroAnimalActivity.class); 
 startActivity (it); 
 } 
 
 // Método que é executado ao pressionar em cima de um item da lista 
e clicar na opção Atualizar. 
 // Os dados desse item que foi pressionado são passados para a 
activity CadastrarAnimal, 
 // sendo possível atualizar os dados desse animal baseado no ID. 
 public void atualizar ( MenuItem item ) { 
 AdapterView . AdapterContextMenuInfo menuInfo = 
 (AdapterView.AdapterContextMenuInfo) 
item. getMenuInfo (); 
 
 final Animal animalAtualizar = 
animaisFiltrados. get (menuInfo.position); 
 Intent it = new Intent ( this , CadastroAnimalActivity.class); 
 it. putExtra ( " animal " , animalAtualizar); 
 startActivity (it); 
 } 
 
 @ Override 
 public void onResume () { 
 super . onResume (); 
 dao. open (); 
 animais = dao. obterTodos (); 
 dao. close (); 
 animaisFiltrados. clear (); 
 animaisFiltrados. addAll (animais); 
 listView. invalidateViews (); 
 } 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
activity_listar_animais.xml 
<? 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 " 
 tools : context = " .ListarAnimaisActivity " > 
 
 < ListView 
 android : id = " @+id/lista_animais " 
 android : layout_width = " 0dp " 
 android : layout_height = " 0dp " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : layout_marginBottom = " 8dp " 
 app : layout_constraintBottom_toBottomOf = " parent " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toTopOf = " parent " /> 
</ androidx.constraintlayout.widget.ConstraintLayout > 
 
 
 
 
 
 
 
 
CadastroAnimalActivity.java 
package com.example.cadastroanimal ; 
 
import androidx.appcompat.app.AppCompatActivity; 
 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 
 
// Activity retornada ao clicar em atualizar os dados de um animal ou 
ao clicar no ícone de "+" 
// no menu superior, para cadastrar um novo animal. 
public class CadastroAnimalActivity extends AppCompatActivity { 
 
 private EditText especie, raca, nome, peso, idade; 
 private AnimalDAO dao; 
 private Animal animal = null ; 
 
 @ Override 
 protected void onCreate ( Bundle savedInstanceState ) { 
 super . onCreate (savedInstanceState); 
 setContentView (R.layout.activity_cadastro_animal); 
 
 especie = findViewById (R.id.editEspecie); 
 raca = findViewById (R.id.editRaca); 
 nome = findViewById (R.id.editNome); 
 peso = findViewById (R.id.editPeso); 
 idade = findViewById (R.id.editIdade); 
 dao = new AnimalDAO ( this ); 
 
 Intent it = getIntent (); 
 if (it. hasExtra ( " animal " )) { 
 animal = (Animal) it. getSerializableExtra ( " animal " ); 
 especie. setText (animal. getEspecie ()); 
 raca. setText (animal. getRaca ()); 
 nome. setText (animal. getNome ()); 
 peso. setText (animal. getPeso (). toString ()); 
 idade. setText (animal. getIdade (). toString ()); 
 } 
 } 
 
 // Método que é chamado ao clicar no botão "Salvar" na tela após o 
preenchimento dos dados 
 // do novo animal ou atualização de dados de um animal existente. 
Este método verifica qual 
 // desses casos é o atual e faz a ação de inserir ou atualizar no 
banco conforme a condição. 
 public void salvar ( View view ) { 
 
 if (animal == null ) { 
 animal = new Animal (); 
 animal. setEspecie (especie. getText (). toString ()); 
 animal. setRaca (raca. getText (). toString ()); 
 animal. setNome (nome. getText (). toString ()); 
 
animal. setPeso (Float. parseFloat (peso. getText (). toString ())); 
 
animal. setIdade (Short. parseShort (idade. getText (). toString ())); 
 dao. open (); 
 long id = dao. inserir (animal); 
 dao. close (); 
 Toast. makeText ( this , " Animal inserido com o id: " + id, 
Toast.LENGTH_SHORT). show (); 
 } else { 
 animal. setEspecie (especie. getText (). toString ()); 
 animal. setRaca (raca. getText (). toString ()); 
 animal. setNome (nome. getText (). toString ()); 
 
animal. setPeso (Float. parseFloat (peso. getText (). toString ())); 
 
animal. setIdade (Short. parseShort (idade. getText (). toString ())); 
 dao. open (); 
 dao. atualizar (animal); 
 dao. close (); 
 Toast. makeText ( this , " Cadastro do animal atualizado " , 
Toast.LENGTH_SHORT). show (); 
 } 
 } 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
activity_cadastro_animal.xml 
<? 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 " 
 tools : context = " .CadastroAnimalActivity " > 
 
 < TextView 
 android : id = " @+id/textEspecie " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : text = " Espécie " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toTopOf = " parent " /> 
 
 < EditText 
 android : id = " @+id/editEspecie " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : ems = " 10 " 
 android : inputType = " textPersonName " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/textEspecie " /> 
 
 < TextView 
 android : id = " @+id/textRaca " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : text = " Raça " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/editEspecie " /> 
 
 < EditText 
 android : id = " @+id/editRaca " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : ems = " 10 " 
 android : inputType = " textPersonName " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/textRaca " /> 
 
 < TextView 
 android : id = " @+id/textNome " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : text = " Nome " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/editRaca " /> 
 
 < EditText 
 android : id = " @+id/editNome " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : ems = " 10 " 
 android : inputType = " textPersonName " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/textNome " /> 
 
 < TextView 
 android : id = " @+id/textPeso " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : text = " Peso " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/editNome " /> 
 
 < EditText 
 android : id = " @+id/editPeso " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : ems = " 10 " 
 android : inputType = " textPersonName " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/textPeso " /> 
 
 < TextView 
 android : id = " @+id/textIdade " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : text = " Idade " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/editPeso " /> 
 
 < EditText 
 android : id = " @+id/editIdade " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : ems = " 10 " 
 android : inputType = " textPersonName " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/textIdade " /> 
 
 < Button 
 android : id = " @+id/buttonSalvar " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : layout_marginBottom = " 8dp " 
 android : onClick = " salvar " 
 android : text = " Salvar " 
 app : layout_constraintBottom_toBottomOf = " parent " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toStartOf = " parent " /> 
 
</ androidx.constraintlayout.widget.ConstraintLayout > 
 
 
 
 
 
 
Animal.java 
package com.example.cadastroanimal ; 
 
import java.io.Serializable; 
 
// Classe modelo da entidade Animal, com seus respectivos métodos 
getters e setters 
public class Animal implements Serializable { 
 private Long id; 
 private String especie, raca, nome; 
 private Float peso; 
 private Short idade; 
 
 public Long getId () { 
 return id; 
 } 
 
 public void setId ( Long id ) { 
 this .id = id; 
 } 
 
 public String getEspecie () { 
 return especie; 
 } 
 
 public void setEspecie ( String especie ) { 
 this .especie = especie; 
 } 
 
 public String getRaca () { 
 return raca; 
 } 
 
 public void setRaca ( String raca ) { 
 this .raca = raca; 
 } 
 
 public String getNome () {return nome; 
 } 
 
 public void setNome ( String nome ) { 
 this .nome = nome; 
 } 
 
 public Float getPeso () { 
 return peso; 
 } 
 
 public void setPeso ( Float peso ) { 
 this .peso = peso; 
 } 
 
 public Short getIdade () { 
 return idade; 
 } 
 
 public void setIdade ( Short idade ) { 
 this .idade = idade; 
 } 
} 
 
AnimalDAO.java 
package com.example.cadastroanimal ; 
 
import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
 
import java.util.ArrayList; 
import java.util.List; 
 
// Arquivo com os métodos de criação (inserir()), leitura 
(obterTodos()), atualização (atualizar()) 
// e deleção (excluir()) dos dados no banco de dados. 
public class AnimalDAO { 
 
 private Conexao conexao; 
 private SQLiteDatabase banco; 
 
 public AnimalDAO ( Context context ) { 
 conexao = new Conexao (context); 
 } 
 
 public void open () throws SQLException { 
 banco = conexao. getWritableDatabase (); 
 } 
 
 public void close () { 
 conexao. close (); 
 } 
 
 public long inserir ( Animal animal ) { 
 ContentValues values = new ContentValues (); 
 values. put ( " especie " , animal. getEspecie ()); 
 values. put ( " raca " , animal. getRaca ()); 
 values. put ( " nome " , animal. getNome ()); 
 values. put ( " peso " , animal. getPeso ()); 
 values. put ( " idade " , animal. getIdade ()); 
 return banco. insert ( " animal " , null , values); 
 } 
 
 public List <Animal> obterTodos () { 
 List <Animal> animais = new ArrayList <>(); 
 Cursor cursor = banco. query ( " animal " , new String []{ " id " , 
" especie " , " raca " , " nome " , " peso " , " idade " }, 
 null , null , null , null , null ); 
 while (cursor. moveToNext ()) { 
 Animal animal = new Animal (); 
 animal. setId (cursor. getLong ( 0 )); 
 animal. setEspecie (cursor. getString ( 1 )); 
 animal. setRaca (cursor. getString ( 2 )); 
 animal. setNome (cursor. getString ( 3 )); 
 animal. setPeso (cursor. getFloat ( 4 )); 
 animal. setIdade (cursor. getShort ( 5 )); 
 animais. add (animal); 
 } 
 cursor. close (); 
 return animais; 
 } 
 
 public void excluir ( Animal animal ) { 
 banco. delete ( " animal " , " id = ? " , new 
String []{animal. getId (). toString ()}); 
 } 
 
 public void atualizar ( Animal animal ) { 
 ContentValues values = new ContentValues (); 
 values. put ( " especie " , animal. getEspecie ()); 
 values. put ( " raca " , animal. getRaca ()); 
 values. put ( " nome " , animal. getNome ()); 
 values. put ( " peso " , animal. getPeso ()); 
 values. put ( " idade " , animal. getIdade ()); 
 banco. update ( " animal " , values, 
 " id = ? " , new String []{animal. getId (). toString ()}); 
 } 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Conexao.java 
package com.example.cadastroanimal ; 
 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
 
import androidx.annotation.Nullable; 
 
// Arquivo que cria conexão com o banco de dados SQLite 
public class Conexao extends SQLiteOpenHelper { 
 
 private static final String name = " banco.db " ; 
 private static final int version = 1 ; 
 
 public Conexao ( Context context ) { 
 super (context, name, null , version); 
 } 
 
 @ Override 
 public void onCreate ( SQLiteDatabase db ) { 
 db. execSQL ( " create table animal(id integer primary key 
autoincrement, " + 
 " especie varchar(20), raca varchar(30), nome 
varchar(50), peso decimal(5), idade integer(2)) " ); 
 } 
 
 @ Override 
 public void onUpgrade ( SQLiteDatabase sqLiteDatabase , int i , int i1 ) 
{} 
} 
AnimalAdapter.java 
package com.example.cadastroanimal ; 
 
import android.app.Activity; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 
 
import java.util.List; 
 
// Adaptador para exibir os dados da listagem de forma customizada para 
esta aplicação, 
// com nome, espécie, idade, raça e peso de cada animal. 
public class AnimalAdapter extends BaseAdapter { 
 
 private List <Animal> animais; 
 private Activity activity; 
 
 public AnimalAdapter ( Activity activity , List <Animal> animais ) { 
 this .activity = activity; 
 this .animais = animais; 
 } 
 
 @ Override 
 public int getCount () { 
 return animais. size (); 
 } 
 
 @ Override 
 public Object getItem ( int i ) { 
 return animais. get (i); 
 } 
 
 @ Override 
 public long getItemId ( int i ) { 
 return animais. get (i). getId (); 
 } 
 
 @ Override 
 public View getView ( int i , View view , ViewGroup viewGroup ) { 
 
 View v = activity. getLayoutInflater (). inflate (R.layout.item, 
viewGroup, false ); 
 TextView especie = v. findViewById (R.id.txtEspecie); 
 TextView raca = v. findViewById (R.id.txtRaca); 
 TextView nome = v. findViewById (R.id.txtNome); 
 TextView peso = v. findViewById (R.id.txtPeso); 
 TextView idade = v. findViewById (R.id.txtIdade); 
 Animal animal = animais. get (i); 
 
 especie. setText (animal. getEspecie ()); 
 raca. setText (animal. getRaca ()); 
 nome. setText (animal. getNome ()); 
 peso. setText (animal. getPeso (). toString ()); 
 idade. setText (animal. getIdade (). toString ()); 
 
 return v; 
 } 
} 
 
 
item.xml 
<? 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 " > 
 
 < TextView 
 android : id = " @+id/txtNome " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content" 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : text = " TextView " 
 android : textColor = " #673AB7 " 
 android : textSize = " 18sp " 
 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 = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : text = " Espécie: " 
 android : textStyle = " bold " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/txtNome " /> 
 
 < TextView 
 android : id = " @+id/txtEspecie " 
 android : layout_width = " 162dp " 
 android : layout_height = " 20dp " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : text = " TextView " 
 app : layout_constraintStart_toEndOf = " @+id/textView2 " 
 app : layout_constraintTop_toBottomOf = " @+id/txtNome " /> 
 
 < TextView 
 android : id = " @+id/textView4 " 
 android : layout_width = " wrap_content " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : text = " Idade: " 
 android : textStyle = " bold " 
 app : layout_constraintStart_toEndOf = " @+id/txtEspecie " 
 app : layout_constraintTop_toBottomOf = " @+id/txtNome " /> 
 
 < TextView 
 android : id = " @+id/textView5 " 
 android : layout_width = " wrap_content " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : text = " Raça: " 
 android : textStyle = " bold " 
 app : layout_constraintStart_toStartOf = " parent " 
 app : layout_constraintTop_toBottomOf = " @+id/textView2 " /> 
 
 < TextView 
 android : id = " @+id/txtRaca " 
 android : layout_width = " 179dp " 
 android : layout_height = " 20dp " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : text = " TextView " 
 app : layout_constraintStart_toEndOf = " @+id/textView5 " 
 app : layout_constraintTop_toBottomOf = " @+id/txtEspecie " /> 
 
 < TextView 
 android : id = " @+id/textView7 " 
 android : layout_width = " wrap_content " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : text = " Peso: " 
 android : textStyle = " bold " 
 app : layout_constraintStart_toEndOf = " @+id/txtRaca " 
 app : layout_constraintTop_toBottomOf = " @+id/textView4 " /> 
 
 < TextView 
 android : id = " @+id/txtIdade " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : text = " TextView " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toEndOf = " @+id/textView4 " 
 app : layout_constraintTop_toBottomOf = " @+id/txtNome " /> 
 
 < TextView 
 android : id = " @+id/txtPeso " 
 android : layout_width = " 0dp " 
 android : layout_height = " wrap_content " 
 android : layout_marginStart = " 8dp " 
 android : layout_marginTop = " 8dp " 
 android : layout_marginEnd = " 8dp " 
 android : text = " TextView " 
 app : layout_constraintEnd_toEndOf = " parent " 
 app : layout_constraintStart_toEndOf = " @+id/textView7 " 
 app : layout_constraintTop_toBottomOf = " @+id/txtIdade " /> 
</ androidx.constraintlayout.widget.ConstraintLayout > 
 
 
 
 
 
 
 
 
 
 
 
 
 
menu_principal.xml 
<? xml version = " 1.0 " encoding = " utf-8 " ?> 
< menu xmlns : app = " http://schemas.android.com/apk/res-auto " 
 xmlns : android = " http://schemas.android.com/apk/res/android " > 
 
 < item 
 android : icon = " @android:drawable/ic_input_add " 
 android : title = " Cadastro " 
 app : showAsAction = " ifRoom " 
 android : onClick = " cadastrar " /> 
 < item 
 android : id = " @+id/app_bar_search " 
 android : icon = " @drawable/ic_search_black_24dp " 
 android : title = " Consulta " 
 app : actionViewClass = " android.widget.SearchView " 
 app : showAsAction = " ifRoom|collapseActionView " /> 
</ menu > 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
menu_contexto.xml 
<? xml version = " 1.0 " encoding = " utf-8 " ?> 
< menu xmlns : app = " http://schemas.android.com/apk/res-auto " 
 xmlns : android = " http://schemas.android.com/apk/res/android " > 
 
 < item android : title = " Excluir " android : onClick = " excluir " /> 
 < item android : title = " Atualizar " android : onClick = " atualizar " /> 
</ menu > 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
REFERÊNCIAS 
 
Build Your First Android App in Java - Google Developers 
< https://developer.android.com/codelabs/build-your-first-android-app#0 > - Acesso 
em 07 de setembro de 2021. 
 
Guia Completo de Android: Básico ao Avançado em Android - DevMedia 
< https://www.devmedia.com.br/guia/android/34580 > - Acesso em 07 de setembro de 
2021. 
 
Tutorial de Android Studio - DevMedia 
< https://www.devmedia.com.br/tutorial-de-android-studio/34003 > - Acesso em 07 de 
setembro de 2021. 
https://developer.android.com/codelabs/build-your-first-android-app#0
https://www.devmedia.com.br/guia/android/34580
https://www.devmedia.com.br/tutorial-de-android-studio/34003

Outros materiais