Buscar

Programação para Dispositivos Móveis - Ava 2

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 22 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 22 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 22 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

Avaliação Individual Avaliativa – Programação para Dispositivos Móveis
	Curso: Análise e Desenvolvimento de Sistemas
Disciplina: Programação para Dispositivos Móveis
Tutor: Claudio Fico Fonseca
	
	
		
Aluno:
	Carlos Henrique da Silva Bernardo - 1210302193
Rio de Janeiro
2023
Introdução:
A persistência de dados desempenha um papel fundamental no desenvolvimento de aplicativos modernos, permitindo armazenar e gerenciar informações de forma eficiente. Neste projeto, desenvolvi um aplicativo Android que utiliza o SQLite como mecanismo de armazenamento para gerenciar registros de pessoas. O objetivo deste trabalho é demonstrar como criar uma aplicação robusta, seguindo as melhores práticas de desenvolvimento Android.
activity_main.xml
<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=".MainActivity">
 <!-- ListView para exibir a lista de pessoas -->
 <ListView
 android:id="@+id/peopleListView"
 android:layout_width="wrap_content"
 android:layout_height="456dp"
 android:layout_below="@id/exitButton"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintHorizontal_bias="0.0"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toTopOf="parent"
 app:layout_constraintVertical_bias="0.007" />
 <!-- Botão para adicionar uma pessoa -->
 <Button
 android:id="@+id/addButton"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerHorizontal="true"
 android:text="Adicionar Pessoa"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintHorizontal_bias="0.111"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toBottomOf="@+id/peopleListView"
 app:layout_constraintVertical_bias="0.505" />
 <!-- Botão para fechar o aplicativo -->
 <Button
 android:id="@+id/exitButton"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@id/addButton"
 android:layout_centerHorizontal="true"
 android:text="Fechar Aplicativo"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintHorizontal_bias="0.936"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toBottomOf="@+id/peopleListView"
 app:layout_constraintVertical_bias="0.505" />
</androidx.constraintlayout.widget.ConstraintLayout>
activity_dados_pessoa.xml
<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=".DadosPessoa">
 <!-- EditText para inserir o nome completo -->
 <EditText
 android:id="@+id/nameEditText"
 android:layout_width="292dp"
 android:layout_height="47dp"
 android:inputType="text"
 android:hint="Nome Completo"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintHorizontal_bias="0.243"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toBottomOf="@+id/textView2"
 app:layout_constraintVertical_bias="0.053" />
 <!-- EditText para inserir a idade -->
 <EditText
 android:id="@+id/ageEditText"
 android:layout_width="114dp"
 android:layout_height="48dp"
 android:layout_marginBottom="36dp"
 android:hint="Idade"
 android:inputType="number"
 app:layout_constraintBottom_toTopOf="@+id/heightEditText"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintHorizontal_bias="0.424"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toBottomOf="@+id/textView2"
 app:layout_constraintVertical_bias="1.0" />
 <!-- EditText para inserir a altura -->
 <EditText
 android:id="@+id/heightEditText"
 android:layout_width="114dp"
 android:layout_height="47dp"
 android:layout_marginTop="116dp"
 android:hint="Altura"
 android:inputType="numberDecimal"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintHorizontal_bias="0.424"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toBottomOf="@+id/nameEditText"
 app:layout_constraintVertical_bias="0.0" />
 <!-- EditText para inserir o peso -->
 <EditText
 android:id="@+id/weightEditText"
 android:layout_width="116dp"
 android:layout_height="45dp"
 android:layout_marginTop="32dp"
 android:hint="Peso"
 android:inputType="numberDecimal"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintHorizontal_bias="0.42"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toBottomOf="@+id/heightEditText"
 app:layout_constraintVertical_bias="0.032" />
 <!-- EditText para inserir o email -->
 <EditText
 android:id="@+id/emailEditText"
 android:layout_width="292dp"
 android:layout_height="47dp"
 android:layout_marginTop="44dp"
 android:inputType="textEmailAddress"
 android:hint="Email"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintHorizontal_bias="0.201"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toBottomOf="@+id/weightEditText"
 app:layout_constraintVertical_bias="0.0" />
 <!-- Botão para editar os dados -->
 <Button
 android:id="@+id/editButton"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_marginEnd="40dp"
 android:layout_marginBottom="88dp"
 android:text="Editar"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toStartOf="@+id/backButton"
 app:layout_constraintHorizontal_bias="1.0"
 app:layout_constraintStart_toStartOf="parent" />
 <!-- Botão para excluir os dados -->
 <Button
 android:id="@+id/deleteButton"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_marginEnd="36dp"
 android:layout_marginBottom="88dp"
 android:text="Excluir"
 android:visibility="visible"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toEndOf="parent" />
 <!-- Botão para voltar -->
 <Button
 android:id="@+id/backButton"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_marginEnd="44dp"
 android:layout_marginBottom="88dp"
 android:text="Voltar"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toStartOf="@+id/deleteButton" />
 <!-- Título para os dados pessoais -->
 <TextView
 android:id="@+id/textView2"
 android:layout_width="260dp"
 android:layout_height="54dp"
 android:layout_marginTop="48dp"
 android:text="Dados Pessoais"
 android:textSize="35sp"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintHorizontal_bias="0.496"app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toTopOf="parent" />
 <!-- Rótulo para a idade -->
 <TextView
 android:id="@+id/textView3"
 android:layout_width="73dp"
 android:layout_height="37dp"
 android:layout_marginTop="220dp"
 android:text="Idade:"
 android:textSize="25sp"
 app:layout_constraintEnd_toStartOf="@+id/ageEditText"
 app:layout_constraintHorizontal_bias="0.452"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toTopOf="parent" />
 <!-- Rótulo para a altura -->
 <TextView
 android:id="@+id/textView4"
 android:layout_width="73dp"
 android:layout_height="37dp"
 android:layout_marginTop="304dp"
 android:text="Altura:"
 android:textSize="25sp"
 app:layout_constraintEnd_toStartOf="@+id/heightEditText"
 app:layout_constraintHorizontal_bias="0.452"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toTopOf="parent" />
 <!-- Rótulo para o peso -->
 <TextView
 android:id="@+id/textView5"
 android:layout_width="73dp"
 android:layout_height="37dp"
 android:layout_marginTop="392dp"
 android:text="Peso:"
 android:textSize="25sp"
 app:layout_constraintEnd_toStartOf="@+id/weightEditText"
 app:layout_constraintHorizontal_bias="0.47"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Main_Activity.java
package com.example.uvaava2;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
 ListView peopleListView;
 Button addButton;
 Button exitButton;
 private ArrayList<String> peopleList;
 private ArrayAdapter<String> adapter;
 private PessoaDAO pessoaDAO;
 private ActivityResultLauncher<Intent> editPersonLauncher; // Novo adição
 private static final int REQUEST_ADD_PERSON = 1;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 // Inicialização da instância do DAO
 pessoaDAO = new PessoaDAO(this);
 pessoaDAO.open();
 // Referências para os elementos da interface
 peopleListView = findViewById(R.id.peopleListView);
 addButton = findViewById(R.id.addButton);
 exitButton = findViewById(R.id.exitButton);
 // Inicialização da lista de pessoas e do adaptador
 peopleList = new ArrayList<>();
 adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, peopleList);
 peopleListView.setAdapter(adapter);
 // Atualiza a lista de pessoas
 updatePeopleList();
 // Inicializa o ActivityResultLauncher para lidar com a edição de pessoa
 editPersonLauncher = registerForActivityResult(
 new ActivityResultContracts.StartActivityForResult(),
 result -> {
 if (result.getResultCode() == RESULT_OK) {
 // Atualiza a lista de pessoas após a edição ou adição
 updatePeopleList();
 }
 }
 );
 // Configura o botão "Adicionar Pessoa"
 addButton.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 // Inicia a atividade "DadosPessoa" para adicionar uma nova pessoa
 Intent intent = new Intent(MainActivity.this, DadosPessoa.class);
 editPersonLauncher.launch(intent);
 }
 });
 // Configura o botão "Fechar Aplicativo"
 exitButton.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 finish();
 }
 });
 // Configura o clique em um item da lista para editar os detalhes da pessoa
 peopleListView.setOnItemClickListener((parent, view, position, id) -> {
 // Inicia a atividade "DadosPessoa" com o ID da pessoa selecionada
 Intent intent = new Intent(MainActivity.this, DadosPessoa.class);
 intent.putExtra("pessoaId", id);
 editPersonLauncher.launch(intent);
 });
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 if (requestCode == REQUEST_ADD_PERSON && resultCode == RESULT_OK) {
 // Atualize a lista de pessoas aqui
 updatePeopleList();
 }
 }
 // Método para atualizar a lista de pessoas
 private void updatePeopleList() {
 List<Pessoa> pessoas = pessoaDAO.listarPessoas();
 peopleList.clear();
 for (Pessoa pessoa : pessoas) {
 peopleList.add(pessoa.getNome());
 }
 adapter.notifyDataSetChanged();
 }
 // Método onDestroy para fechar o banco de dados ao sair da atividade
 @Override
 protected void onDestroy() {
 super.onDestroy();
 pessoaDAO.close();
 }
}
DadosPessoas.java
package com.example.uvaava2;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class DadosPessoa extends AppCompatActivity {
 // Declaração de elementos da interface
 EditText nameEditText, ageEditText, heightEditText, weightEditText, emailEditText;
 Button editButton, deleteButton, backButton;
 // Instância do DAO para acessar o banco de dados
 private PessoaDAO pessoaDAO;
 // ID da pessoa sendo editada (ou -1 se for uma nova pessoa)
 private long pessoaId;
 // Flag para indicar se está no modo de edição ou adição
 private boolean isEditMode = false;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_dados_pessoa);
 // Inicialização da instância do DAO
 pessoaDAO = new PessoaDAO(this);
 pessoaDAO.open();
 // Referências para os elementos da interface
 nameEditText = findViewById(R.id.nameEditText);
 ageEditText = findViewById(R.id.ageEditText);
 heightEditText = findViewById(R.id.heightEditText);
 weightEditText = findViewById(R.id.weightEditText);
 emailEditText = findViewById(R.id.emailEditText);
 editButton = findViewById(R.id.editButton);
 deleteButton = findViewById(R.id.deleteButton);
 backButton = findViewById(R.id.backButton);
 // Obtém o ID da pessoa da Intent
 pessoaId = getIntent().getLongExtra("pessoaId", -1);
 if (pessoaId != -1) {
 // Modo de edição
 isEditMode = true;
 // Se estiver no modo de edição, preenche os campos com os dados da pessoa existente
 Pessoa pessoa = pessoaDAO.getPessoaById(pessoaId);
 if (pessoa != null) {
 nameEditText.setText(pessoa.getNome());
 ageEditText.setText(String.valueOf(pessoa.getIdade()));
 heightEditText.setText(String.valueOf(pessoa.getAltura()));
 weightEditText.setText(String.valueOf(pessoa.getPeso()));
 emailEditText.setText(pessoa.getEmail());
 }
 editButton.setText("Editar");
 } else {
 // Modode adição
 isEditMode = false;
 editButton.setText("Incluir");
 }
 editButton.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 if (isEditMode) {
 // Modo de edição - atualiza os dados da pessoa
 Pessoa pessoa = new Pessoa();
 pessoa.setId(pessoaId);
 pessoa.setNome(nameEditText.getText().toString());
 pessoa.setIdade(Integer.parseInt(ageEditText.getText().toString()));
 pessoa.setAltura(Double.parseDouble(heightEditText.getText().toString()));
 pessoa.setPeso(Double.parseDouble(weightEditText.getText().toString()));
 pessoa.setEmail(emailEditText.getText().toString());
 int rowsUpdated = pessoaDAO.atualizarPessoa(pessoa);
 if (rowsUpdated > 0) {
 Toast.makeText(DadosPessoa.this, "Pessoa atualizada com sucesso!", Toast.LENGTH_SHORT).show();
 finish();
 } else {
 Toast.makeText(DadosPessoa.this, "Erro ao atualizar pessoa.", Toast.LENGTH_SHORT).show();
 }
 } else {
 // Modo de adição - insere uma nova pessoa
 Pessoa pessoa = new Pessoa();
 pessoa.setNome(nameEditText.getText().toString());
 pessoa.setIdade(Integer.parseInt(ageEditText.getText().toString()));
 pessoa.setAltura(Double.parseDouble(heightEditText.getText().toString()));
 pessoa.setPeso(Double.parseDouble(weightEditText.getText().toString()));
 pessoa.setEmail(emailEditText.getText().toString());
 long pessoaId = pessoaDAO.inserirPessoa(pessoa);
 if (pessoaId != -1) {
 Toast.makeText(DadosPessoa.this, "Pessoa adicionada com sucesso!", Toast.LENGTH_SHORT).show();
 finish();
 } else {
 Toast.makeText(DadosPessoa.this, "Erro ao adicionar pessoa.", Toast.LENGTH_SHORT).show();
 }
 }
 }
 });
 deleteButton.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 if (isEditMode && pessoaId != -1) {
 // Modo de edição - exclui a pessoa existente
 pessoaDAO.excluirPessoa(pessoaId);
 Toast.makeText(DadosPessoa.this, "Pessoa excluída com sucesso!", Toast.LENGTH_SHORT).show();
 finish();
 }
 }
 });
 // Botão Voltar
 backButton.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 finish();
 }
 });
 }
 // Método onDestroy para fechar o banco de dados ao sair da atividade
 @Override
 protected void onDestroy() {
 super.onDestroy();
 pessoaDAO.close();
 }
}
Pessoa.java
package com.example.uvaava2;
public class Pessoa {
 private long id;
 private String nome;
 private int idade;
 private double altura;
 private double peso;
 private String email;
 // Construtor padrão
 public Pessoa() {
 // Valores padrão para inicialização
 this.nome = "Carlos";
 this.idade = 24;
 this.altura = 1.71;
 this.peso = 84;
 this.email = "carlospsp@hotmail.com";
 }
 // Getters e Setters
 // Getter para o ID da pessoa
 public long getId() {
 return id;
 }
 // Setter para o ID da pessoa
 public void setId(long id) {
 this.id = id;
 }
 // Getter para o nome da pessoa
 public String getNome() {
 return nome;
 }
 // Setter para o nome da pessoa
 public void setNome(String nome) {
 if(!nome.isEmpty()) {
 this.nome = nome;
 }
 }
 // Getter para a idade da pessoa
 public int getIdade() {
 return idade;
 }
 // Setter para a idade da pessoa
 public void setIdade(int idade) {
 if(idade >= 0) {
 this.idade = idade;
 }
 }
 // Getter para a altura da pessoa
 public double getAltura() {
 return altura;
 }
 // Setter para a altura da pessoa
 public void setAltura(double altura) {
 if(altura >= 0) {
 this.altura = altura;
 }
 }
 // Getter para o peso da pessoa
 public double getPeso() {
 return peso;
 }
 // Setter para o peso da pessoa
 public void setPeso(double peso) {
 if(peso >= 0) {
 this.peso = peso;
 }
 }
 // Getter para o email da pessoa
 public String getEmail() {
 return email;
 }
 // Setter para o email da pessoa
 public void setEmail(String email) {
 if(!email.isEmpty()) {
 this.email = email;
 }
 }
}
PessoaDAO.java
package com.example.uvaava2;
import android.annotation.SuppressLint;
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;
public class PessoaDAO {
 private SQLiteDatabase database;
 private PessoaDatabaseHelper dbHelper;
 // Construtor da classe que recebe o contexto da aplicação
 public PessoaDAO(Context context) {
 dbHelper = new PessoaDatabaseHelper(context);
 }
 // Método para abrir o banco de dados em modo de escrita
 public void open() throws SQLException {
 database = dbHelper.getWritableDatabase();
 }
 // Método para fechar o banco de dados
 public void close() {
 dbHelper.close();
 }
 // Método para inserir uma nova pessoa no banco de dados
 public long inserirPessoa(Pessoa pessoa) {
 ContentValues values = new ContentValues();
 values.put(PessoaDatabaseHelper.COLUMN_NOME, pessoa.getNome());
 values.put(PessoaDatabaseHelper.COLUMN_IDADE, pessoa.getIdade());
 values.put(PessoaDatabaseHelper.COLUMN_ALTURA, pessoa.getAltura());
 values.put(PessoaDatabaseHelper.COLUMN_PESO, pessoa.getPeso());
 values.put(PessoaDatabaseHelper.COLUMN_EMAIL, pessoa.getEmail());
 // Insere os valores no banco de dados e retorna o ID da nova pessoa
 return database.insert(PessoaDatabaseHelper.TABLE_PESSOA, null, values);
 }
 // Método para atualizar os dados de uma pessoa no banco de dados
 public int atualizarPessoa(Pessoa pessoa) {
 ContentValues values = new ContentValues();
 values.put(PessoaDatabaseHelper.COLUMN_NOME, pessoa.getNome());
 values.put(PessoaDatabaseHelper.COLUMN_IDADE, pessoa.getIdade());
 values.put(PessoaDatabaseHelper.COLUMN_ALTURA, pessoa.getAltura());
 values.put(PessoaDatabaseHelper.COLUMN_PESO, pessoa.getPeso());
 values.put(PessoaDatabaseHelper.COLUMN_EMAIL, pessoa.getEmail());
 // Atualiza os valores no banco de dados com base no ID da pessoa
 return database.update(PessoaDatabaseHelper.TABLE_PESSOA, values,
 PessoaDatabaseHelper.COLUMN_ID + " = ?", new String[]{String.valueOf(pessoa.getId())});
 }
 // Método para excluir uma pessoa do banco de dados com base no ID
 public void excluirPessoa(long pessoaId) {
 database.delete(PessoaDatabaseHelper.TABLE_PESSOA,
 PessoaDatabaseHelper.COLUMN_ID + " = ?", new String[]{String.valueOf(pessoaId)});
 }
 // Método para listar todas as pessoas no banco de dados
 public List<Pessoa> listarPessoas() {
 List<Pessoa> pessoas = new ArrayList<>();
 Cursor cursor = database.query(PessoaDatabaseHelper.TABLE_PESSOA,
 null, null, null, null, null, null);
 cursor.moveToFirst();while (!cursor.isAfterLast()) {
 Pessoa pessoa = cursorToPessoa(cursor);
 pessoas.add(pessoa);
 cursor.moveToNext();
 }
 cursor.close();
 return pessoas;
 }
 // Método privado para converter um cursor em um objeto Pessoa
 @SuppressLint("Range")
 private Pessoa cursorToPessoa(Cursor cursor) {
 Pessoa pessoa = new Pessoa();
 pessoa.setId(cursor.getLong(cursor.getColumnIndex(PessoaDatabaseHelper.COLUMN_ID)));
 pessoa.setNome(cursor.getString(cursor.getColumnIndex(PessoaDatabaseHelper.COLUMN_NOME)));
 pessoa.setIdade(cursor.getInt(cursor.getColumnIndex(PessoaDatabaseHelper.COLUMN_IDADE)));
 pessoa.setAltura(cursor.getDouble(cursor.getColumnIndex(PessoaDatabaseHelper.COLUMN_ALTURA)));
 pessoa.setPeso(cursor.getDouble(cursor.getColumnIndex(PessoaDatabaseHelper.COLUMN_PESO)));
 pessoa.setEmail(cursor.getString(cursor.getColumnIndex(PessoaDatabaseHelper.COLUMN_EMAIL)));
 return pessoa;
 }
 // Método para obter uma pessoa pelo seu ID
 public Pessoa getPessoaById(long pessoaId) {
 Cursor cursor = database.query(PessoaDatabaseHelper.TABLE_PESSOA,
 null,
 PessoaDatabaseHelper.COLUMN_ID + " = ?",
 new String[]{String.valueOf(pessoaId)},
 null, null, null);
 if (cursor != null) {
 cursor.moveToFirst();
 Pessoa pessoa = cursorToPessoa(cursor);
 cursor.close();
 return pessoa;
 }
 return null;
 }
}
PessoaDatabaseHelper.java
package com.example.uvaava2;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class PessoaDatabaseHelper extends SQLiteOpenHelper {
 // Nome e versão do banco de dados
 private static final String DATABASE_NAME = "pessoa.db";
 private static final int DATABASE_VERSION = 1;
 // Nome da tabela e nomes das colunas
 public static final String TABLE_PESSOA = "pessoas";
 public static final String COLUMN_ID = "_id";
 public static final String COLUMN_NOME = "nome";
 public static final String COLUMN_IDADE = "idade";
 public static final String COLUMN_ALTURA = "altura";
 public static final String COLUMN_PESO = "peso";
 public static final String COLUMN_EMAIL = "email";
 // Comando SQL para criar a tabela
 private static final String TABLE_CREATE =
 "CREATE TABLE " + TABLE_PESSOA + " (" +
 COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
 COLUMN_NOME + " TEXT, " +
 COLUMN_IDADE + " INTEGER, " +
 COLUMN_ALTURA + " REAL, " +
 COLUMN_PESO + " REAL, " +
 COLUMN_EMAIL + " TEXT);";
 // Construtor da classe que recebe o contexto da aplicação
 public PessoaDatabaseHelper(Context context) {
 super(context, DATABASE_NAME, null, DATABASE_VERSION);
 }
 // Método chamado quando o banco de dados é criado pela primeira vez
 @Override
 public void onCreate(SQLiteDatabase db) {
 db.execSQL(TABLE_CREATE);
 }
 // Método chamado quando o banco de dados é atualizado
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 // Remove a tabela existente se ela existir
 db.execSQL("DROP TABLE IF EXISTS " + TABLE_PESSOA);
 // Cria uma nova tabela
 onCreate(db);
 }
}
Imagens do Teste:
Conclusão:
Neste projeto, desenvolvi com sucesso um aplicativo Android que utiliza o SQLite para persistência de dados. Implementei uma classe Pessoa, criei uma interface de usuário para inclusão, exclusão e edição de registros e apliquei a arquitetura em três camadas para uma organização eficaz do código. Este projeto reforçou meu conhecimento em desenvolvimento Android e me preparou para futuros projetos envolvendo persistência de dados.
Bibliografia:
Listas e Adapters no Android. Disponível em: <https://www.devmedia.com.br/listas-e-adapters-no-android/33774>. Acesso em: 2 set. 2023.
[Curso 2017 - Android Studio] Aula 12 - Criando a classe ClienteRepositorio - Parte 2. Disponível em: <https://www.youtube.com/watch?v=Wz6-YPgHl4I&ab_channel=PauloViniciusMoreiraDutra>. Acesso em: 2 set. 2023.
THIENGO, V. SQLite no Android, Entendendo e Utilizando. Disponível em: <https://www.thiengo.com.br/sqlite-no-android-entendendo-e-utilizando>. Acesso em: 2 set. 2023.

Outros materiais