Baixe o app para aproveitar ainda mais
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
Compartilhar