Prática: criar o app Bus Schedule

1. Antes de começar

Introdução

No codelab Persistência de dados com o Room, você aprendeu a implementar um banco de dados do Room em um app Android. Este exercício oferece uma oportunidade de conhecer melhor a implementação de bancos de dados do Room com um conjunto de etapas orientadas de forma independente.

Neste conjunto de exercícios, você vai usar os conceitos aprendidos do codelab Persistência de dados com o Room para concluir o app Bus Schedule. Esse app apresenta ao usuário uma lista de pontos de ônibus e partidas programadas usando um banco de dados do Room.

O código da solução está disponível no final. Para aproveitar melhor esta experiência de aprendizado, tente fazer implementações e resolver problemas o máximo possível antes de analisar o código da solução fornecido. É durante a prática que você mais aprende.

Pré-requisitos

O que é necessário

  • Um computador com acesso à Internet e o Android Studio.
  • O código inicial do app Bus Schedule.

O que você vai criar

Neste exercício, você vai concluir o app Bus Schedule implementando e usando um banco de dados para fornecer dados à interface. Um arquivo de banco de dados no diretório de assets encontrado no código inicial fornece dados para o app. Você carrega esses dados em um banco de dados e os disponibiliza para uso de leitura pelo app.

Depois de concluído, o app vai mostrar uma lista de pontos de ônibus e horários de chegada correspondentes. Você pode clicar em um item da lista para acionar a navegação até uma tela de detalhes que fornece dados sobre o ponto.

O app concluído mostra estes dados, carregados de um banco de dados do Room:

cdb6f9e79137f323.png

6c59e6f57f59bd27.png

2. Fazer o download do código inicial

  1. No Android Studio, abra a pasta basic-android-kotlin-compose-training-bus-schedule.
  2. Abra o código do app Bus Schedule no Android Studio.
  3. Clique no botão Run 65e9e2045e2dc48b.png para criar e executar o app.

Espera-se que o app mostre uma programação com uma parada quando criado usando a ramificação starter do código.

3603c91854cada9a.png

3. Adicionar dependências

Adicione as dependências abaixo ao app:

app/build.gradle.kts

implementation("androidx.room:room-ktx:${rootProject.extra["room_version"]}")
implementation("androidx.room:room-runtime:${rootProject.extra["room_version"]}")
ksp("androidx.room:room-compiler:${rootProject.extra["room_version"]}")

Acesse a versão estável mais recente do room na documentação do Room e adicione o número de versão correto. No momento, a versão mais recente é:

build.gradle.kts

set("room_version", "2.5.1")

4. Criar uma entidade do Room

Converta a classe de dados atual da programação de ônibus em uma Room Entity.

A imagem abaixo mostra um exemplo da tabela de dados final, incluindo o esquema e a propriedade Entity.

9587f9a5f035e552.png

5. Criar um objeto de acesso a dados

Crie um objeto de acesso a dados (DAO, na sigla em inglês) para acessar o banco de dados. O DAO oferece um método para extrair todos os itens do banco de dados e outro para extrair um único item com o nome do ponto de ônibus. Não se esqueça de ordenar a programação por horário de chegada.

6. Criar uma instância de banco de dados

Crie um banco de dados do Room que use a Entity e o DAO. O banco de dados é inicializado com os dados do arquivo assets/database/bus_schedule.db no código inicial.

7. Atualizar o ViewModel

Atualize o ViewModel para extrair dados do DAO e fornecê-los à interface em vez de fornecer dados de exemplo. Aproveite os dois métodos DAO para fornecer dados à lista e a paradas individuais.

8. Código da solução