Вы находитесь на странице: 1из 101

Capítulo 02: Cadastro de Alunos

António José Araújo 2/101


Agenda
● Definições de projeto – Registro Acadêmico
● Pensando em Casos de Uso
● Criação de uma nova App
● Criação da Tela de Listagem de Alunos
● Trabalhando com ListView, List e Adapters
● Integração entre componentes de tela e controladores
● Alertas baseados no componente Toast

António José Araújo 3/101


● Evento de clique simples em uma lista
● Evento de clique longo
Definições de Projeto

● Como estratégia para apresentação do conteúdo deste curso,


realizaremos a implementação de uma app para
Manipulação de Dados de Alunos
● Em linhas gerais, nossa app consiste em:
– Manter dados de alunos;
– Entrar em contato com alunos;
– Trocar dados com um servidor WEB; E
António José Araújo 4/101
– Compartilhar conteúdo em mídias ;

António José Araújo 5/101


Funcionalidades da nossa App

António José Araújo 6/101


António José Araújo 7/101
Funcionalidades da nossa App

António José Araújo 8/101


António José Araújo 9/101
Começando pelo cadastro
● Neste requisito da nossa App, precisamos de:

António José Araújo 10/101


● Uma tela para listar
Alunos
● E outra para cadastrar ou
alterar dados de Alunos
● A exclusão deve ocorrer com
a seleção de um aluno na
tela de listagem
● Vamos começar criando uma
nova Android
Application

António José Araújo 11/101


Exercício 01: Nova Android Application

António José Araújo 12/101


António José Araújo 13/101
Exercício 01: Nova Android Application
● Clique em Next, até chegar à última tela:

António José Araújo 14/101


António José Araújo 15/101
Estrutura de pastas da App

António José Araújo 16/101


António José Araújo 17/101
Exercício 02: Tela de listagem
● Agora vamos definir a Tela de listagem de alunos ● Nossa tela
precisa dos seguintes componentes:
– Lista: apresentação dos nomes dos alunos. O
componente com essa função é o ListView, que recebe
uma coleção de Objetos e lista seus dados
– Campo de texto: onde o usuário informa o nome de um
aluno que deseja incluir na listagem. Usaremos
o EditText
– Botão: para adicionar o nome do aluno à lista.
Usaremos o componente Button.
● Altere o arquivo: /res/values/strings.xml
António José Araújo 18/101
Exercício 02: Tela de listagem

● Altere o arquivo: /res/values/strings.xml


António José Araújo 19/101
Exercício 02: Tela de listagem

● Altere: /res/layout/listaalunoslayout.xml
António José Araújo 20/101
Exercício 02: Tela de listagem

António José Araújo 21/101


Exercício 02: Tela de listagem
● Altere: /res/layout/listaalunoslayout.xml

António José Araújo 22/101


Exercício 02: Tela de listagem

António José Araújo 23/101


Exercício 02: Tela de listagem
● Altere: /res/layout/listaalunoslayout.xml

António José Araújo 24/101


Exercício 02: Tela de listagem

António José Araújo 25/101


Exercício 02: Tela de listagem
● Altere: /res/layout/listaalunoslayout.xml

António José Araújo 26/101


Exercício 02: Tela de listagem

António José Araújo 27/101


Exercício 02: Tela de listagem

● Execute sua App

António José Araújo 28/101


Exercício 02: Tela de listagem

● Repare que os os componentes EditText e Button estão


visíveis
● No entanto, a ListView não aparece
● Isso ocorre porque nossa lista ainda está vazia

António José Araújo 29/101


Exercício 02: Tela de listagem

António José Araújo 30/101


Exercício 02: Tela de listagem

António José Araújo 31/101


Controladores e as regras de negócio

● As telas (xml) que criamos em Android estão associadas a


classes Java (controladores), responsáveis pela
implementação de suas regras de negócio
● A nossa tela listaalunoslayou.xml é controlada pela classe
ListaAlunosActivity.java

António José Araújo 32/101


Exercício 03: Atributos e coleção

● A classe de controle captura os eventos e componentes da


tela e implementa as regrasde negócio necessárias às

funcionalidades da nossa App

António José Araújo 33/101


Exercício 03: Atributos e coleção

António José Araújo 34/101


Exercício 03: Atributos e coleção

António José Araújo 35/101


Exercício 03: Atributos e coleção

António José Araújo 36/101


Exercício 03: Atributos e coleção

António José Araújo 37/101


Exercício 04: Inicialização de atributos

António José Araújo 38/101


Exercício 04: Inicialização de atributos

António José Araújo 39/101


Exercício 04: Inicialização de atributos

António José Araújo 40/101


Exercício 04: Inicialização de atributos

António José Araújo 41/101


Exercício 04: Inicialização de atributos

António José Araújo 42/101


Itens a ponderar

● Precisamos inicializar a coleção de alunos e exibir os nomes


na nossa ListView
● Contudo, uma ListView é um componente de tela que pode
assumir diversos formatos de visualização
● Com isso, a ListView precisa da ajuda de alguém que saiba
como organizar os dados na tela
● Ou seja, a ListView precisa do apoio de um Adaptador, que
saiba converter objetos Java para componetes de Tela.
Chamamos esse Objeto de apoio de Adapter.

António José Araújo 43/101


ListView's com layouts diferentes

António José Araújo 44/101


Exercício 05: Novos atributos

António José Araújo 45/101


António José Araújo 46/101
Exercício 05: Novos atributos

António José Araújo 47/101


Exercício 05: Novos atributos

António José Araújo 48/101


Exercício 05: Novos atributos

António José Araújo 49/101


Passo-a-passo

● Agora que já:


– associamos objetos java a componentes de tela – e
criamos o adptador que sabe exibir List<Strings> ● Vamos
inicializar:
– A coleção de nomes de Alunos(List<Strings>);
– O adaptador (ArrayAdapter<String>); e

António José Araújo 50/101


Exercício 06: Inicialização da ListView

– A ListView que vai exibir os nomes na tela;


● No final, associaremos o adaptador à ListView

António José Araújo 51/101


Exercício 06: Inicialização da ListView

António José Araújo 52/101


Exercício 06: Inicialização da ListView

António José Araújo 53/101


Exercício 06: Inicialização da ListView

António José Araújo 54/101


Exercício 06: Inicialização da ListView

António José Araújo 55/101


Exercício 06: Inicialização da ListView

António José Araújo 56/101


Passo-a-passo
● Agora, podemos atualizar o evento de clique do botão
Adicionar Aluno;
● Maaaas, o que devemos fazer quando do clique?
● Precisamos:
– Adicionar o nome digitado no campo edNome à
coleção listaAlunos;
– Limpar o conteúdo do campo edNome; e

António José Araújo 57/101


Exercício 07: Evento de Click do botão

– Atualizar o conteúdo da ListView ● No final


do método onCreate(), inclua:

António José Araújo 58/101


Exercício 07: Evento de Click do botão

António José Araújo 59/101


Exercício 07: Evento de Click do botão

● No final do método onCreate(), inclua:

António José Araújo 60/101


Exercício 07: Evento de Click do botão

António José Araújo 61/101


Exercício 07: Evento de Click do botão

● No final do método onCreate(), inclua:

António José Araújo 62/101


Exercício 07: Evento de Click do botão

António José Araújo 63/101


Exercício 07: Evento de Click do botão

● No final do método onCreate(), inclua:

António José Araújo 64/101


Exercício 07: Evento de Click do botão

António José Araújo 65/101


Dando um “confere” no resultado

António José Araújo 66/101


● Rode sua App
● Inclua alguns nomes
● Ainda poderíamos agregar mais
alguma funcionalidade?
● Que tal exibir um alerta com o
nome do aluno, quando do clique
em um nome da lista?
Evento de click da ListView
● Assim como Button, a ListView
possui o evento de click ● Contudo,

António José Araújo 67/101


Exercício 08: Cliques da ListView
a ListView apresenta dois tipos de click:
– Click curto, quando o usuário clica em um item da ListView;
e
– Click Longo, quando o usuário clica e segura um item da
ListView ;
● Vamos implementar os eventos de clique Longo e Simples no
final do método onCreate()

António José Araújo 68/101


António José Araújo 69/101
Exercício 08: Cliques da ListView

M.Sc. Márcio Palheta 70/101


Exercício 08: Cliques da ListView

M.Sc. Márcio Palheta 71/101


Exercício 08: Cliques da ListView

M.Sc. Márcio Palheta 72/101


Resultado dos cliques

António José Araújo 73/101


E quando giramos o device?

António José Araújo 74/101


Resultado dos cliques

António José Araújo 75/101


E quando giramos o device?

António José Araújo 76/101


António José Araújo 77/101
E quando giramos o device?

António José Araújo 78/101


E quando giramos o device?

António José Araújo 79/101


E quando giramos o device?

António José Araújo 80/101


E quando giramos o device?

António José Araújo 81/101


Persistência do estado da Activity

● Podemos armazenar o estado da app antes dela ser


pausada, parada ou destruída
● Para isso, utilizamos Métodos de Callback, que são métodos
usados quando o cliente requer um retorno do servidor, mas
não quer ficar bloqueado, esperando.
● onSaveInstanceState(): chamado quando o Android vai
destruir a Activity, mas sabe que vai restaurá-la depois;
– Não é chamado quando usuário clica em Back

António José Araújo 82/101


Persistência do estado da Activity

● onRestoreInstanceState(): Chamado antes da


Activity destruída ser chamada pelo usuário

António José Araújo 83/101


Persistência do estado da Activity

António José Araújo 84/101


Persistência do estado da Activity

● Para salvar o estado da Activity, podemos usar o objeto


Bundle, gerenciado pelo Android
● O Bundle empacota um java.util.Map
● O Objeto Bundle é passado pelo Android aos métodos
onCreate(), onSaveInstanceState() e
onRestoreInstanceState()
● Podemos utilizar o Map empacotado no Bundle para
armazenar o estado da nossa App

António José Araújo 85/101


Persistência do estado da Activity

António José Araújo 86/101


Passo-a-passo
● Na classe ListaAlunosActivity, defina duas constantes:
– String TAG = "CADASTRO_ALUNO" – Usada para registro
de mensagens de LOG no Logcat
– String ALUNOS_KEY = "LISTA" – Usada como Chave para o
Map do Objeto Bundle;
● Implemente os métodos onSaveInstanceState() e
onRestoreInstanceState()

António José Araújo 87/101


Exercício 09: Salvar estado da Activity

● Atualize o método onCreate(), para tentar recuperar a chave

ALUNOS_KEY do Bundle
● No início da Activity, vamos incluir as novas constantes:

António José Araújo 88/101


Exercício 09: Salvar estado da Activity

● No início da Activity, vamos incluir as novas constantes:

António José Araújo 89/101


Exercício 09: Salvar estado da Activity

● Após a definição de atributos, inclua o novo método:

António José Araújo 90/101


Exercício 09: Salvar estado da Activity

● Após a definição de atributos, inclua o novo método:

António José Araújo 91/101


Exercício 09: Salvar estado da Activity

● Após o método onSaveInstanceState(), inclua:

António José Araújo 92/101


Exercício 09: Salvar estado da Activity

● Após o método onSaveInstanceState(), inclua:


António José Araújo 93/101
Exercício 09: Salvar estado da Activity

António José Araújo 94/101


E agora, quando giramos o device...

António José Araújo 95/101


António José Araújo 96/101
Resultado exibido no LogCat

● Pelas mensagens de log, verificamos a lista de alunos sendo salva


e recuperada do objeto Bundle

António José Araújo 97/101


O que vem a seguir?
● Tela de Dados do Aluno

António José Araújo 98/101


● Persistência com SQLite
● Intents
● Câmera e arquivos
● LayoutInflater
● Serviços de background

● Integração via JSON

António José Araújo 99/101


Referências

● www.caelum.com.br
● d.android.com
● LECHETA, Ricardo. Google Android, 3a edição,
Novatec, São Paulo, 2013
● Código fonte completo:
https://github.com/marciopalheta/cursosandroid

António José Araújo 100/101