No desenvolvimento de aplicações Android, a manipulação de dados é uma tarefa fundamental. Este artigo detalha a implementação das funcionalidades de adição e edição para um sistema de notas simples, utilizando componentes padrão do Android como Activity e EditText, e interagindo com um banco de dados local através de uma classe auxiliar (GerenciadorBancoDadosNotas).
Adicionar Novas Notas
Para permitir que os usuários criem novas notas, é necessário uma interface que colete o título e o conteúdo. A AdicionarNotaActivity é responsável por essa tarefa. Ela captura as informações inseridas, valida o título e, em seguida, persiste a nota no banco de dados.
package com.example.appnotas; // Exemplo de pacote
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
// Supondo que você tenha as classes Nota, GerenciadorBancoDadosNotas e UtilitariosToast
import com.example.appnotas.model.Nota;
import com.example.appnotas.util.GerenciadorBancoDadosNotas;
import com.example.appnotas.util.UtilitariosToast;
public class AdicionarNotaActivity extends AppCompatActivity {
private EditText campoTitulo;
private EditText campoConteudo;
private GerenciadorBancoDadosNotas dbManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_adicionar_nota); // Layout para adicionar notas
campoTitulo = findViewById(R.id.input_titulo);
campoConteudo = findViewById(R.id.input_conteudo);
dbManager = new GerenciadorBancoDadosNotas(this);
}
public void salvarNovaNota(View view) {
String titulo = campoTitulo.getText().toString().trim();
String conteudo = campoConteudo.getText().toString();
if (titulo.isEmpty()) {
UtilitariosToast.mostrarMensagemCurta(this, "O campo de título não pode ficar vazio!");
return;
}
Nota novaNota = new Nota();
novaNota.setTitulo(titulo);
novaNota.setConteudo(conteudo);
novaNota.setDataCriacao(obterTimestampAtual());
long idGerado = dbManager.inserirRegistroNota(novaNota); // Método para inserir no DB
if (idGerado != -1) {
UtilitariosToast.mostrarMensagemCurta(this, "Nota salva com sucesso!");
finish(); // Retorna à atividade anterior
} else {
UtilitariosToast.mostrarMensagemCurta(this, "Falha ao salvar a nota.");
}
}
private String obterTimestampAtual() {
// Define o formato da data e hora, e o Locale padrão para consistência
SimpleDateFormat formatador = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
return formatador.format(new Date());
}
}
Neste código, a função salvarNovaNota é vinculada a um botão na interface do usuário (provavelmente através de android:onClick="salvarNovaNota" no XML do layout). Ela coleta o texto dos campos, verifica se o título não está vazio (usando trim().isEmpty() para lidar com espaços em branco), cria um objeto Nota, preenche seus atributos e então chama o método inserirRegistroNota do GerenciadorBancoDadosNotas. Uma mensagem de sucesso ou falha é exibida ao usuário, e a atividade é finalizada em caso de sucesso.
Editar Notas Existentes
A edição de uma nota envolve carregar os dados existentes, permitir modificações e depois persistir as alterações. A EditarNotaActivity é projetada para esta finalidade.
package com.example.appnotas; // Exemplo de pacote
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
// Supondo que você tenha as classes Nota, GerenciadorBancoDadosNotas e UtilitariosToast
import com.example.appnotas.model.Nota;
import com.example.appnotas.util.GerenciadorBancoDadosNotas;
import com.example.appnotas.util.UtilitariosToast;
public class EditarNotaActivity extends AppCompatActivity {
private Nota notaEmEdicao;
private EditText campoEdicaoTitulo;
private EditText campoEdicaoConteudo;
private GerenciadorBancoDadosNotas dbManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_editar_nota); // Layout para editar notas
campoEdicaoTitulo = findViewById(R.id.input_titulo_edicao);
campoEdicaoConteudo = findViewById(R.id.input_conteudo_edicao);
dbManager = new GerenciadorBancoDadosNotas(this);
carregarDetalhesNota();
}
private void carregarDetalhesNota() {
Intent intentRecebida = getIntent();
// A nota é passada como um objeto serializável através da Intent
notaEmEdicao = (Nota) intentRecebida.getSerializableExtra("chave_nota_edicao");
if (notaEmEdicao != null) {
campoEdicaoTitulo.setText(notaEmEdicao.getTitulo());
campoEdicaoConteudo.setText(notaEmEdicao.getConteudo());
} else {
UtilitariosToast.mostrarMensagemCurta(this, "Erro: Nota não encontrada para edição.");
finish();
}
}
public void atualizarNotaExistente(View view) {
String novoTitulo = campoEdicaoTitulo.getText().toString().trim();
String novoConteudo = campoEdicaoConteudo.getText().toString();
if (novoTitulo.isEmpty()) {
UtilitariosToast.mostrarMensagemCurta(this, "O título atualizado não pode ser vazio!");
return;
}
// Atualiza os atributos do objeto Nota existente
notaEmEdicao.setTitulo(novoTitulo);
notaEmEdicao.setConteudo(novoConteudo);
notaEmEdicao.setDataCriacao(obterTimestampAtual()); // Atualiza o timestamp de modificação, se necessário
int linhasAtualizadas = dbManager.atualizarRegistroNota(notaEmEdicao); // Método para atualizar no DB
if (linhasAtualizadas > 0) {
UtilitariosToast.mostrarMensagemCurta(this, "Nota atualizada com sucesso!");
finish();
} else {
UtilitariosToast.mostrarMensagemCurta(this, "Falha ao atualizar a nota.");
}
}
private String obterTimestampAtual() {
SimpleDateFormat formatador = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
return formatador.format(new Date());
}
}
Na EditarNotaActivity, o método carregarDetalhesNota é invocado no onCreate para recuperar o objeto Nota da Intent que iniciou esta atividade. Os dados da nota são então populados nos campos EditText. A função atualizarNotaExistente (também vinculada a um botão) coleta as novas informações, valida o título, atualiza o objeto Nota e chama o método atualizarRegistroNota do GerenciadorBancoDadosNotas para persistir as mudanças. O sucesso ou falha da operação também é notificado via Toast.