Livro 3 - Projeto Agenda de Contatos - Parte 3
1. Apresentação
Neste livro 3 conheceremos novos componentes avançados para a construção de aplicativos usando o Android Jetpack. Vamos exemplificar o uso dos componentes de arquitetura (Android Arch Components) do Android Jetpack e o uso da biblioteca Room para a manipulação do banco de dados SQLite através do aplicativo de Agenda de Contatos.
O aplicativo Agenda de Contatos fornece acesso a informações de contato armazenadas em um banco de dados SQLite no dispositivo. No aplicativo podemos:
- ver uma lista em ordem alfabética dos contatos
- ver os detalhes de um contato tocando no nome dele na lista de contatos
- adicionar novos contatos
- editar ou excluir contatos existentes
Figura 1 Aplicativo Agenda de Contatos com múltiplas telas
Na primeira parte do projeto foram construídas as telas do aplicativo e as classes referentes a Atividade, Fragmentos, ViewModels, Adapters e classes necessárias para a configuração e execução do banco de dados. Devido ao tamanho do aplicativo, vamos revisar a finalidade de cada classe:
- Pacote data
- ContactsDatabase: classe padrão da biblioteca Room para conter a descrição do banco de dado
- ContactsDAO: classe padrão da biblioteca Room para conter as operações a ser manipuladas pelo banco de dados
- Contact: classe para conter a descrição de um objeto a ser manipulado pelo banco de dados.
- ContactsRepository: está classe não é exigida pela biblioteca Room mas é usado devido boas práticas de programação pois ela irá oferecer a aplicação uma interface (API) para o restante do aplicativo.
- Pacote principal
- MainActivity: classe principal que gerencia os fragmentos do aplicativo e implementa seus métodos de interface de call-back para responder quando um contato é selecionado, um novo contato é adicionado ou um já existente é atualizado ou excluído
- Pacote ui.contacts
- MainFragment: essa classe gerencia a RecyclerView da lista de contatos e o FloatingActionButton para adicionar contatos.
- MainViewModel: ViewModel para vincular os dados do banco a uma lista de contatos
- ContactsAdapter: subclasse de RecylerView.Adapter usada pelo MainFragment para vincular a lista ordenada de nomes de contato a RecyclerView.
- ItemDivider: essa classe define o divisor exibido entre os itens da RecyclerView.
- AddEditFragment: essa classe gerencia os TextInputLayouts e um FloatingActionButton para adicionar um novo contato ou editar um já existente.
- AddEditViewModel: ViewModel para armazenar os dados de um novo contato ou um já existente
- DetailFragment: essa classe gerencia os componentes TextView estilizados que exibem os detalhes de um contato selecionado e os itens da barra de aplicativo que permitem ao usuário editar ou excluir o contato que está sendo exibi
- DetailViewModel: ViewModel para vincular os dados de um contato específico
Na segunda parte do projeto, fizemos a configuração das transições entre os fragmentos com o componente Navigation e apresentação de dados fictícios.
Por fim, nesta terceira e última etapa do projeto vamos aplicar a persistência de dados da agenda de contatos com a biblioteca Room manipulando os dados salvos em um banco de dados SQLite. Também iremos implementar o padrão ViewModel e usar a classe LiveData, ambas presentes nos componentes de ciclo de vida do Android Jetpack.