Gerenciamento de Notas no Android: Adicionar e Editar Registros

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.

Tags: android java sqlite CRUD Activity

Publicado em 8-11 02:15