SlideShare ist ein Scribd-Unternehmen logo
1 von 75
Downloaden Sie, um offline zu lesen
Capítulo 02: Cadastro de Alunos
Instrutor
●

Programador desde 2000

●

Aluno de doutorado

●

●

●

●

Mestre em informática pelo
ICOMP/UFAM
Especialista em aplicações
WEB – FUCAPI
marcio.palheta@gmail.com
sites.google.com/site/marcio
palheta
M.Sc. Márcio Palheta

2/75
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

●

Evento de clique simples em uma lista

●

Evento de clique longo
M.Sc. Márcio Palheta

3/75
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

–

Compartilhar conteúdo em mídias ;

M.Sc. Márcio Palheta

4/75
Funcionalidades da nossa App

M.Sc. Márcio Palheta

5/75
Funcionalidades da nossa App

M.Sc. Márcio Palheta

6/75
Começando pelo cadastro
●

●

●

●

●

Neste requisito da nossa
App, precisamos de:
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
M.Sc. Márcio Palheta

7/75
Exercício 01: Nova Android Application

M.Sc. Márcio Palheta

8/75
Exercício 01: Nova Android Application
●

Clique em Next, até chegar à última tela:

M.Sc. Márcio Palheta

9/75
Estrutura de pastas da App

M.Sc. Márcio Palheta

10/75
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.
M.Sc. Márcio Palheta

11/75
Exercício 02: Tela de listagem
●

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

M.Sc. Márcio Palheta

12/75
Exercício 02: Tela de listagem
●

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

Strings usadas na
Tela de Listagem

M.Sc. Márcio Palheta

13/75
Exercício 02: Tela de listagem
●

Altere: /res/layout/listaalunoslayout.xml

M.Sc. Márcio Palheta

14/75
Exercício 02: Tela de listagem
●

Altere: /res/layout/listaalunoslayout.xml
Campo de Texto
id=edNomeListagem

M.Sc. Márcio Palheta

15/75
Exercício 02: Tela de listagem
●

Altere: /res/layout/listaalunoslayout.xml

Componente Botão
id=btAddListagem

M.Sc. Márcio Palheta

16/75
Exercício 02: Tela de listagem
●

Altere: /res/layout/listaalunoslayout.xml

Componente Lista
para exibir Alunos
id=lvListagem

M.Sc. Márcio Palheta

17/75
Exercício 02: Tela de listagem
●

●

●

●

Execute sua App
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

M.Sc. Márcio Palheta

18/75
Exercício 02: Tela de listagem
●

●

●

●

Campo de Texto e
Botão estão
Execute sua App
disponíveis

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

M.Sc. Márcio Palheta

19/75
Exercício 02: Tela de listagem
●

●

●

●

Campo de Texto e
Botão estão
Execute sua App
disponíveis

Repare que os os
componentes EditText e
Button estão visíveis
Nossa Lista de alunos
entanto, a está vazia
ainda ListView

No
não aparece

Isso ocorre porque nossa
lista ainda está vazia

M.Sc. Márcio Palheta

20/75
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
A classe de controle captura os eventos e
componentes da tela e implementa as regrasde negócio
necessárias às funcionalidades da nossa App

M.Sc. Márcio Palheta

21/75
Exercício 03: Atributos e coleção

M.Sc. Márcio Palheta

22/75
Exercício 03: Atributos e coleção
Componente de Tela,
acessados na classe
de controle

M.Sc. Márcio Palheta

23/75
Exercício 03: Atributos e coleção

Objeto que guarda a
coleção de Alunos

M.Sc. Márcio Palheta

24/75
Exercício 03: Atributos e coleção

Método que pode ser
usado para inicializar
os atributos

M.Sc. Márcio Palheta

25/75
Exercício 04: Inicialização de atributos

M.Sc. Márcio Palheta

26/75
Exercício 04: Inicialização métodoatributos
O de setContentView(...)
associa uma Tela(.xml) a uma
classe de controle (Activity.java)

M.Sc. Márcio Palheta

27/75
Exercício 04: Inicialização de atributos
O método
findViewById(...) associa
componentes da View a
atributos da Activity

M.Sc. Márcio Palheta

28/75
Exercício 04: Inicialização de atributos

O método
setOnClickListener(...)
é usado para captura do
Clique do Botão

M.Sc. Márcio Palheta

29/75
Exercício 04: Inicialização de atributos

O método
setOnClickListener(...)
é usado para captura do
Clique do Botão

É comum utilizarmos uma
implementação anônima
da Interface OnClickListener

M.Sc. Márcio Palheta

30/75
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.

M.Sc. Márcio Palheta

31/75
ListView's com layouts diferentes

M.Sc. Márcio Palheta

32/75
Exercício 05: Novos atributos

M.Sc. Márcio Palheta

33/75
Exercício 05: Novos atributos

Declaração de
Novos Atributos

M.Sc. Márcio Palheta

34/75
Exercício 05: Novos atributos

Objeto que converte
Listas e Vetores
em View

Declaração de
Novos Atributos

M.Sc. Márcio Palheta

35/75
Exercício 05: Novos atributos

Declaração de
Novos Atributos
Definição do Layout
que o Adapter usará

M.Sc. Márcio Palheta

36/75
Passo-a-passo
●

Agora que já:
–
–

●

associamos objetos java a componentes de tela
e criamos o adptador que sabe exibir List<Strings>

Vamos inicializar:
–
–

O adaptador (ArrayAdapter<String>); e

–
●

A coleção de nomes de Alunos(List<Strings>);
A ListView que vai exibir os nomes na tela;

No final, associaremos o adaptador à ListView
M.Sc. Márcio Palheta

37/75
Exercício 06: Inicialização da ListView

M.Sc. Márcio Palheta

38/75
Exercício 06: Inicialização da ListView

Declaração de
Novos Atributos

M.Sc. Márcio Palheta

39/75
Exercício 06: Inicialização da ListView

Declaração de
Novos Atributos

Inicializa a coleção de
nomes de Alunos

M.Sc. Márcio Palheta

40/75
Exercício 06: Inicialização da ListView

Declaração de
Novos Atributos

Inicializa o Adapter, com
a atividade contexto (this),
layout padrão(adapterLayout) e a
coleção de alunos (listaAlunos)

M.Sc. Márcio Palheta

41/75
Exercício 06: Inicialização da ListView

Declaração de
Novos Atributos

Associação do
Adapter à ListView

M.Sc. Márcio Palheta

42/75
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

–

Atualizar o conteúdo da ListView

M.Sc. Márcio Palheta

43/75
Exercício 07: Evento de Click do botão
●

No final do método onCreate(), inclua:
Implementação do
Evento de Clique

M.Sc. Márcio Palheta

44/75
Exercício 07: Evento de Click do botão
●

No final do método onCreate(), inclua:
Implementação do
Evento de Clique

Adiciona o nome
Informado no campo
edNome à coleção

M.Sc. Márcio Palheta

45/75
Exercício 07: Evento de Click do botão
●

No final do método onCreate(), inclua:
Implementação do
Evento de Clique

Limpa o conteúdo
do campo edNome

M.Sc. Márcio Palheta

46/75
Exercício 07: Evento de Click do botão
●

No final do método onCreate(), inclua:
Implementação do
Evento de Clique

Atualiza o conteúdo
da ListView

M.Sc. Márcio Palheta

47/75
Dando um “confere” no resultado
●

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?

M.Sc. Márcio Palheta

48/75
Evento de click da ListView
●

Assim como Button, a ListView possui o evento de click

●

Contudo, 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()

M.Sc. Márcio Palheta

49/75
Exercício 08: Cliques da ListView

M.Sc. Márcio Palheta

50/75
Implementação do Evento
de Clique Simples

Exercício 08: Cliques da ListView

M.Sc. Márcio Palheta

51/75
Implementação do Evento
de Clique Simples

Exercício 08: Cliques da ListView

Implementação do Evento
de Clique Longo

M.Sc. Márcio Palheta

52/75
Implementação do Evento
de Clique Simples

Exercício 08: Cliques da ListView

Implementação do Evento
de Clique Longo

Retorno == true: não executa o click simples
Retorno == false: executa o click simples

M.Sc. Márcio Palheta

53/75
Resultado dos cliques

M.Sc. Márcio Palheta

54/75
Resultado dos cliques

M.Sc. Márcio Palheta

55/75
E quando giramos o device?

M.Sc. Márcio Palheta

56/75
E quando giramos o device?
Antes do giro,
lista preenchida :-)

M.Sc. Márcio Palheta

57/75
E quando giramos o device?
Antes do giro,
lista preenchida :-)
Depois do giro,
lista vazia :-(

M.Sc. Márcio Palheta

58/75
E quando giramos o device?
Antes do giro,
lista preenchida :-)

Quando giramos o device,
o Android invoca novamente
o método onCreate() da
nossa Activity

M.Sc. Márcio Palheta

Depois do giro,
lista vazia :-(

59/75
E quando giramos o device?
Antes do giro,
lista preenchida :-)

Quando giramos o device,
o Android invoca novamente
o método onCreate() da
nossa Activity

Depois do giro,
lista vazia :-(

Com isso, todos os
componentes retornam
ao estado inicial
M.Sc. Márcio Palheta

60/75
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

onRestoreInstanceState(): Chamado antes da Activity
destruída ser chamada pelo usuário
M.Sc. Márcio Palheta

61/75
Persistência do estado da Activity

M.Sc. Márcio Palheta

62/75
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

M.Sc. Márcio Palheta

63/75
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()
Atualize o método onCreate(), para tentar recuperar a
chave ALUNOS_KEY do Bundle

M.Sc. Márcio Palheta

64/75
Exercício 09: Salvar estado da Activity
●

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

M.Sc. Márcio Palheta

65/75
Exercício 09: Salvar estado da Activity
●

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

M.Sc. Márcio Palheta

66/75
Exercício 09: Salvar estado da Activity
●

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

M.Sc. Márcio Palheta

67/75
Exercício 09: Salvar estado da Activity
●

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

M.Sc. Márcio Palheta

68/75
Exercício 09: Salvar estado da Activity
●

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

M.Sc. Márcio Palheta

69/75
Exercício 09: Salvar estado da Activity
●

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

M.Sc. Márcio Palheta

70/75
E agora, quando giramos o device...
Antes do giro,
lista preenchida :-)
Depois do giro,
lista continua
preenchida :-)

M.Sc. Márcio Palheta

71/75
Resultado exibido no LogCat
●

Pelas mensagens de log, verificamos a lista de alunos
sendo salva e recuperada do objeto Bundle

M.Sc. Márcio Palheta

72/75
O que vem a seguir?
●

Tela de Dados do Aluno

●

Persistência com SQLite

●

Intents

●

Câmera e arquivos

●

LayoutInflater

●

Serviços de background

●

Integração via JSON

M.Sc. Márcio Palheta

73/75
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

M.Sc. Márcio Palheta

74/75
Capítulo 02: Cadastro de Alunos

Weitere ähnliche Inhalte

Was ist angesagt?

Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1Elaine Cecília Gatto
 
Exercicios - Java Swing Listeners
Exercicios - Java Swing ListenersExercicios - Java Swing Listeners
Exercicios - Java Swing ListenersDaniel Arndt Alves
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphiHelder Lopes
 
Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1Thyago Maia
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Thyago Maia
 
Construindo aplicações com netbeans
Construindo aplicações com netbeansConstruindo aplicações com netbeans
Construindo aplicações com netbeansSliedesharessbarbosa
 
Produtividade com Eclipse IDE
Produtividade com Eclipse IDEProdutividade com Eclipse IDE
Produtividade com Eclipse IDEAnderson Silveira
 
Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1Thyago Maia
 
Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1Thyago Maia
 
Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2Thyago Maia
 

Was ist angesagt? (19)

Apostila php avancado
Apostila php avancadoApostila php avancado
Apostila php avancado
 
Java swing
Java swingJava swing
Java swing
 
Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1
 
Tutorial Java: Polimorfismo
Tutorial Java: PolimorfismoTutorial Java: Polimorfismo
Tutorial Java: Polimorfismo
 
Tutorial Java: Interface
Tutorial Java: InterfaceTutorial Java: Interface
Tutorial Java: Interface
 
Exercicios - Java Swing
Exercicios - Java SwingExercicios - Java Swing
Exercicios - Java Swing
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Exercicios - Java Swing Listeners
Exercicios - Java Swing ListenersExercicios - Java Swing Listeners
Exercicios - Java Swing Listeners
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphi
 
Basico dovba excel_tutorial1
Basico dovba excel_tutorial1Basico dovba excel_tutorial1
Basico dovba excel_tutorial1
 
Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3
 
Construindo aplicações com netbeans
Construindo aplicações com netbeansConstruindo aplicações com netbeans
Construindo aplicações com netbeans
 
Produtividade com Eclipse IDE
Produtividade com Eclipse IDEProdutividade com Eclipse IDE
Produtividade com Eclipse IDE
 
Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1
 
Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1
 
Mvc delphi
Mvc delphiMvc delphi
Mvc delphi
 
Java generics-basics
Java generics-basicsJava generics-basics
Java generics-basics
 
Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2
 

Ähnlich wie Cadastro de Alunos em Android

Capítulo 10 - Sincronização de dados usando JSON
Capítulo 10 - Sincronização de dados usando JSONCapítulo 10 - Sincronização de dados usando JSON
Capítulo 10 - Sincronização de dados usando JSONMarcio Palheta
 
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdfAula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdfnosbisantos
 
Aula 02 fundamentos
Aula 02   fundamentosAula 02   fundamentos
Aula 02 fundamentosfmkoba
 
Introdução a classes e objetos
Introdução a classes e objetosIntrodução a classes e objetos
Introdução a classes e objetosCícero Quarto
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Opencadd Advanced Technology
 
Workshop espresso
Workshop espressoWorkshop espresso
Workshop espressoCESAR
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)Mario Sergio
 
Criando itens de menu em aplicativos nativos com a BlackBerry API
Criando itens de menu em aplicativos nativos com a BlackBerry APICriando itens de menu em aplicativos nativos com a BlackBerry API
Criando itens de menu em aplicativos nativos com a BlackBerry APIRicardo Ogliari
 
plano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunhoplano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunhouserrx
 
Javascript (parte 1)
Javascript (parte 1)Javascript (parte 1)
Javascript (parte 1)Alex Camargo
 
Lista deexerciciono 02
Lista deexerciciono 02Lista deexerciciono 02
Lista deexerciciono 02jucibs
 
Ac03 exibir registro_mestre_de_servicos
Ac03 exibir registro_mestre_de_servicosAc03 exibir registro_mestre_de_servicos
Ac03 exibir registro_mestre_de_servicosConsultor SAP MM
 

Ähnlich wie Cadastro de Alunos em Android (20)

Capítulo 10 - Sincronização de dados usando JSON
Capítulo 10 - Sincronização de dados usando JSONCapítulo 10 - Sincronização de dados usando JSON
Capítulo 10 - Sincronização de dados usando JSON
 
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdfAula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
 
Apostila Android
Apostila AndroidApostila Android
Apostila Android
 
Aula 02 fundamentos
Aula 02   fundamentosAula 02   fundamentos
Aula 02 fundamentos
 
Introdução a classes e objetos
Introdução a classes e objetosIntrodução a classes e objetos
Introdução a classes e objetos
 
Tutorial Java: Herança
Tutorial Java: HerançaTutorial Java: Herança
Tutorial Java: Herança
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2
 
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
 
Gestão de projectos a prática
Gestão de projectos   a práticaGestão de projectos   a prática
Gestão de projectos a prática
 
Workshop espresso
Workshop espressoWorkshop espresso
Workshop espresso
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Criando itens de menu em aplicativos nativos com a BlackBerry API
Criando itens de menu em aplicativos nativos com a BlackBerry APICriando itens de menu em aplicativos nativos com a BlackBerry API
Criando itens de menu em aplicativos nativos com a BlackBerry API
 
plano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunhoplano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunho
 
Javascript (parte 1)
Javascript (parte 1)Javascript (parte 1)
Javascript (parte 1)
 
Lista deexerciciono 02
Lista deexerciciono 02Lista deexerciciono 02
Lista deexerciciono 02
 
Ac03 exibir registro_mestre_de_servicos
Ac03 exibir registro_mestre_de_servicosAc03 exibir registro_mestre_de_servicos
Ac03 exibir registro_mestre_de_servicos
 
Criando um App com App Inventor 2
Criando um App com App Inventor 2Criando um App com App Inventor 2
Criando um App com App Inventor 2
 
01 strategy
01 strategy01 strategy
01 strategy
 

Mehr von Marcio Palheta

Capítulo 09 - Serviços em Background
Capítulo 09 - Serviços em BackgroundCapítulo 09 - Serviços em Background
Capítulo 09 - Serviços em BackgroundMarcio Palheta
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldMarcio Palheta
 
Implementação de Sockets em JAVA
Implementação de Sockets em JAVAImplementação de Sockets em JAVA
Implementação de Sockets em JAVAMarcio Palheta
 
Trabalhando com Threads em JAVA
Trabalhando com Threads em JAVATrabalhando com Threads em JAVA
Trabalhando com Threads em JAVAMarcio Palheta
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao PythonMarcio Palheta
 
Weka em aplicações java
Weka em aplicações javaWeka em aplicações java
Weka em aplicações javaMarcio Palheta
 
Palestra ministrada na Feira Norte do Estudante 2012
Palestra ministrada na Feira Norte do Estudante 2012Palestra ministrada na Feira Norte do Estudante 2012
Palestra ministrada na Feira Norte do Estudante 2012Marcio Palheta
 

Mehr von Marcio Palheta (7)

Capítulo 09 - Serviços em Background
Capítulo 09 - Serviços em BackgroundCapítulo 09 - Serviços em Background
Capítulo 09 - Serviços em Background
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorld
 
Implementação de Sockets em JAVA
Implementação de Sockets em JAVAImplementação de Sockets em JAVA
Implementação de Sockets em JAVA
 
Trabalhando com Threads em JAVA
Trabalhando com Threads em JAVATrabalhando com Threads em JAVA
Trabalhando com Threads em JAVA
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Weka em aplicações java
Weka em aplicações javaWeka em aplicações java
Weka em aplicações java
 
Palestra ministrada na Feira Norte do Estudante 2012
Palestra ministrada na Feira Norte do Estudante 2012Palestra ministrada na Feira Norte do Estudante 2012
Palestra ministrada na Feira Norte do Estudante 2012
 

Cadastro de Alunos em Android

  • 2. Instrutor ● Programador desde 2000 ● Aluno de doutorado ● ● ● ● Mestre em informática pelo ICOMP/UFAM Especialista em aplicações WEB – FUCAPI marcio.palheta@gmail.com sites.google.com/site/marcio palheta M.Sc. Márcio Palheta 2/75
  • 3. 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 ● Evento de clique simples em uma lista ● Evento de clique longo M.Sc. Márcio Palheta 3/75
  • 4. 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 – Compartilhar conteúdo em mídias ; M.Sc. Márcio Palheta 4/75
  • 5. Funcionalidades da nossa App M.Sc. Márcio Palheta 5/75
  • 6. Funcionalidades da nossa App M.Sc. Márcio Palheta 6/75
  • 7. Começando pelo cadastro ● ● ● ● ● Neste requisito da nossa App, precisamos de: 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 M.Sc. Márcio Palheta 7/75
  • 8. Exercício 01: Nova Android Application M.Sc. Márcio Palheta 8/75
  • 9. Exercício 01: Nova Android Application ● Clique em Next, até chegar à última tela: M.Sc. Márcio Palheta 9/75
  • 10. Estrutura de pastas da App M.Sc. Márcio Palheta 10/75
  • 11. 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. M.Sc. Márcio Palheta 11/75
  • 12. Exercício 02: Tela de listagem ● Altere o arquivo: /res/values/strings.xml M.Sc. Márcio Palheta 12/75
  • 13. Exercício 02: Tela de listagem ● Altere o arquivo: /res/values/strings.xml Strings usadas na Tela de Listagem M.Sc. Márcio Palheta 13/75
  • 14. Exercício 02: Tela de listagem ● Altere: /res/layout/listaalunoslayout.xml M.Sc. Márcio Palheta 14/75
  • 15. Exercício 02: Tela de listagem ● Altere: /res/layout/listaalunoslayout.xml Campo de Texto id=edNomeListagem M.Sc. Márcio Palheta 15/75
  • 16. Exercício 02: Tela de listagem ● Altere: /res/layout/listaalunoslayout.xml Componente Botão id=btAddListagem M.Sc. Márcio Palheta 16/75
  • 17. Exercício 02: Tela de listagem ● Altere: /res/layout/listaalunoslayout.xml Componente Lista para exibir Alunos id=lvListagem M.Sc. Márcio Palheta 17/75
  • 18. Exercício 02: Tela de listagem ● ● ● ● Execute sua App 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 M.Sc. Márcio Palheta 18/75
  • 19. Exercício 02: Tela de listagem ● ● ● ● Campo de Texto e Botão estão Execute sua App disponíveis 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 M.Sc. Márcio Palheta 19/75
  • 20. Exercício 02: Tela de listagem ● ● ● ● Campo de Texto e Botão estão Execute sua App disponíveis Repare que os os componentes EditText e Button estão visíveis Nossa Lista de alunos entanto, a está vazia ainda ListView No não aparece Isso ocorre porque nossa lista ainda está vazia M.Sc. Márcio Palheta 20/75
  • 21. 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 A classe de controle captura os eventos e componentes da tela e implementa as regrasde negócio necessárias às funcionalidades da nossa App M.Sc. Márcio Palheta 21/75
  • 22. Exercício 03: Atributos e coleção M.Sc. Márcio Palheta 22/75
  • 23. Exercício 03: Atributos e coleção Componente de Tela, acessados na classe de controle M.Sc. Márcio Palheta 23/75
  • 24. Exercício 03: Atributos e coleção Objeto que guarda a coleção de Alunos M.Sc. Márcio Palheta 24/75
  • 25. Exercício 03: Atributos e coleção Método que pode ser usado para inicializar os atributos M.Sc. Márcio Palheta 25/75
  • 26. Exercício 04: Inicialização de atributos M.Sc. Márcio Palheta 26/75
  • 27. Exercício 04: Inicialização métodoatributos O de setContentView(...) associa uma Tela(.xml) a uma classe de controle (Activity.java) M.Sc. Márcio Palheta 27/75
  • 28. Exercício 04: Inicialização de atributos O método findViewById(...) associa componentes da View a atributos da Activity M.Sc. Márcio Palheta 28/75
  • 29. Exercício 04: Inicialização de atributos O método setOnClickListener(...) é usado para captura do Clique do Botão M.Sc. Márcio Palheta 29/75
  • 30. Exercício 04: Inicialização de atributos O método setOnClickListener(...) é usado para captura do Clique do Botão É comum utilizarmos uma implementação anônima da Interface OnClickListener M.Sc. Márcio Palheta 30/75
  • 31. 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. M.Sc. Márcio Palheta 31/75
  • 32. ListView's com layouts diferentes M.Sc. Márcio Palheta 32/75
  • 33. Exercício 05: Novos atributos M.Sc. Márcio Palheta 33/75
  • 34. Exercício 05: Novos atributos Declaração de Novos Atributos M.Sc. Márcio Palheta 34/75
  • 35. Exercício 05: Novos atributos Objeto que converte Listas e Vetores em View Declaração de Novos Atributos M.Sc. Márcio Palheta 35/75
  • 36. Exercício 05: Novos atributos Declaração de Novos Atributos Definição do Layout que o Adapter usará M.Sc. Márcio Palheta 36/75
  • 37. Passo-a-passo ● Agora que já: – – ● associamos objetos java a componentes de tela e criamos o adptador que sabe exibir List<Strings> Vamos inicializar: – – O adaptador (ArrayAdapter<String>); e – ● A coleção de nomes de Alunos(List<Strings>); A ListView que vai exibir os nomes na tela; No final, associaremos o adaptador à ListView M.Sc. Márcio Palheta 37/75
  • 38. Exercício 06: Inicialização da ListView M.Sc. Márcio Palheta 38/75
  • 39. Exercício 06: Inicialização da ListView Declaração de Novos Atributos M.Sc. Márcio Palheta 39/75
  • 40. Exercício 06: Inicialização da ListView Declaração de Novos Atributos Inicializa a coleção de nomes de Alunos M.Sc. Márcio Palheta 40/75
  • 41. Exercício 06: Inicialização da ListView Declaração de Novos Atributos Inicializa o Adapter, com a atividade contexto (this), layout padrão(adapterLayout) e a coleção de alunos (listaAlunos) M.Sc. Márcio Palheta 41/75
  • 42. Exercício 06: Inicialização da ListView Declaração de Novos Atributos Associação do Adapter à ListView M.Sc. Márcio Palheta 42/75
  • 43. 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 – Atualizar o conteúdo da ListView M.Sc. Márcio Palheta 43/75
  • 44. Exercício 07: Evento de Click do botão ● No final do método onCreate(), inclua: Implementação do Evento de Clique M.Sc. Márcio Palheta 44/75
  • 45. Exercício 07: Evento de Click do botão ● No final do método onCreate(), inclua: Implementação do Evento de Clique Adiciona o nome Informado no campo edNome à coleção M.Sc. Márcio Palheta 45/75
  • 46. Exercício 07: Evento de Click do botão ● No final do método onCreate(), inclua: Implementação do Evento de Clique Limpa o conteúdo do campo edNome M.Sc. Márcio Palheta 46/75
  • 47. Exercício 07: Evento de Click do botão ● No final do método onCreate(), inclua: Implementação do Evento de Clique Atualiza o conteúdo da ListView M.Sc. Márcio Palheta 47/75
  • 48. Dando um “confere” no resultado ● 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? M.Sc. Márcio Palheta 48/75
  • 49. Evento de click da ListView ● Assim como Button, a ListView possui o evento de click ● Contudo, 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() M.Sc. Márcio Palheta 49/75
  • 50. Exercício 08: Cliques da ListView M.Sc. Márcio Palheta 50/75
  • 51. Implementação do Evento de Clique Simples Exercício 08: Cliques da ListView M.Sc. Márcio Palheta 51/75
  • 52. Implementação do Evento de Clique Simples Exercício 08: Cliques da ListView Implementação do Evento de Clique Longo M.Sc. Márcio Palheta 52/75
  • 53. Implementação do Evento de Clique Simples Exercício 08: Cliques da ListView Implementação do Evento de Clique Longo Retorno == true: não executa o click simples Retorno == false: executa o click simples M.Sc. Márcio Palheta 53/75
  • 54. Resultado dos cliques M.Sc. Márcio Palheta 54/75
  • 55. Resultado dos cliques M.Sc. Márcio Palheta 55/75
  • 56. E quando giramos o device? M.Sc. Márcio Palheta 56/75
  • 57. E quando giramos o device? Antes do giro, lista preenchida :-) M.Sc. Márcio Palheta 57/75
  • 58. E quando giramos o device? Antes do giro, lista preenchida :-) Depois do giro, lista vazia :-( M.Sc. Márcio Palheta 58/75
  • 59. E quando giramos o device? Antes do giro, lista preenchida :-) Quando giramos o device, o Android invoca novamente o método onCreate() da nossa Activity M.Sc. Márcio Palheta Depois do giro, lista vazia :-( 59/75
  • 60. E quando giramos o device? Antes do giro, lista preenchida :-) Quando giramos o device, o Android invoca novamente o método onCreate() da nossa Activity Depois do giro, lista vazia :-( Com isso, todos os componentes retornam ao estado inicial M.Sc. Márcio Palheta 60/75
  • 61. 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 onRestoreInstanceState(): Chamado antes da Activity destruída ser chamada pelo usuário M.Sc. Márcio Palheta 61/75
  • 62. Persistência do estado da Activity M.Sc. Márcio Palheta 62/75
  • 63. 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 M.Sc. Márcio Palheta 63/75
  • 64. 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() Atualize o método onCreate(), para tentar recuperar a chave ALUNOS_KEY do Bundle M.Sc. Márcio Palheta 64/75
  • 65. Exercício 09: Salvar estado da Activity ● No início da Activity, vamos incluir as novas constantes: M.Sc. Márcio Palheta 65/75
  • 66. Exercício 09: Salvar estado da Activity ● No início da Activity, vamos incluir as novas constantes: M.Sc. Márcio Palheta 66/75
  • 67. Exercício 09: Salvar estado da Activity ● Após a definição de atributos, inclua o novo método: M.Sc. Márcio Palheta 67/75
  • 68. Exercício 09: Salvar estado da Activity ● Após a definição de atributos, inclua o novo método: M.Sc. Márcio Palheta 68/75
  • 69. Exercício 09: Salvar estado da Activity ● Após o método onSaveInstanceState(), inclua: M.Sc. Márcio Palheta 69/75
  • 70. Exercício 09: Salvar estado da Activity ● Após o método onSaveInstanceState(), inclua: M.Sc. Márcio Palheta 70/75
  • 71. E agora, quando giramos o device... Antes do giro, lista preenchida :-) Depois do giro, lista continua preenchida :-) M.Sc. Márcio Palheta 71/75
  • 72. Resultado exibido no LogCat ● Pelas mensagens de log, verificamos a lista de alunos sendo salva e recuperada do objeto Bundle M.Sc. Márcio Palheta 72/75
  • 73. O que vem a seguir? ● Tela de Dados do Aluno ● Persistência com SQLite ● Intents ● Câmera e arquivos ● LayoutInflater ● Serviços de background ● Integração via JSON M.Sc. Márcio Palheta 73/75
  • 74. 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 M.Sc. Márcio Palheta 74/75