Aula 2
Transição entre activities
 É feita usando o método startActivity, passando como
parâmetro uma variável da classe Intent,
correspondente à activity desejada
 O intent será criado com o contexto da aplicação e a
classe da activity desejada
 Exemplo:
Intent i = new Intent(getApplicationContext(),
SecondScreen.class);
startActivity(i);
Transição entre activities
 Podem ser levados parâmetros, usando o método
putExtra, passando uma chave e o valor desejado
 Exemplo:
i.putExtra("key", "value");
 Para recuperar parâmetros de outra activity, é usado o
método getStringExtra
 Exemplo:
Intent i = getIntent();
i.getStringExtra("key");
Exemplo
 Vamos usar um botão para mudar entre activities,
passando um nome digitado num EditText na primeira
activity para uma saudação na segunda, que conterá
um botão para voltar à primeira
Menu
 É um componente que fornece opções, no canto direito
superior da activity
 É configurado por arquivos xml, localizados na pasta
menu
 É criado pelo método onCreateOptionsMenu(Menu
menu)
 Seus eventos são gerenciados no método
onOptionsItemSelected(MenuItem item)
Exemplo
 Vamos modificar nossa aplicação, para que a transição
seja feita com menus
Membros estáticos
 São atributos e métodos que podem ser chamados em
uma classe mesmo que não tenha sido criada uma
instância desta classe
 Conjunto de instruções de um programa que pode ser
chamado por um nome, sendo ideal para evitar a
repetição de código
Exemplo
public class Utilitaria {
public static int soma(int a,int b) {
return a + b;
}
}
O método estático e inteiro soma() recebe como parâmetros
dois inteiros, a e b, os soma e retorna
Exercícios
 Acresente à classe Utilitaria os métodos:
 double media (double a, double media), que retorne a
média aritmética entre a e b
 int somatorio(int n), que retorne o resultado do
somatório 1 + 2 + 3 + ... + n
 int fatorial(int n), que retorne o fatorial de n
Classes e objetos
 Classe: representa um molde, a partir do qual podem
ser instanciados objetos com características afins. Uma
classe define o comportamento dos objetos através de
seus métodos (comportamento), e quais estados ele é
capaz de manter através de seus atributos (estado)
 Objeto / instância de uma classe: um objeto é capaz de
armazenar estados através de seus atributos e reagir a
mensagens enviadas a ele, assim como se relacionar e
enviar mensagens a outros objetos
Estado e comportamento
 Atributos: representam o estado de um objeto.
Basicamente a estrutura de dados que vai representar a
classe. Por exemplo: Funcionário: nome, endereço,
telefone, CPF
 Métodos: definem o comportamento dos objetos. Por
exemplo, a classe Circulo pode implementar o método
area(), que retorne sua área
Getters e Setters
 Em linguagens orientadas a objetos, por padrão,
atributos são definidos como privados (private), o que
tira o acesso direto a eles por classes externas
 Para conceder acesso de visualização do estado de um
objeto, são usados os getters, métodos get(). Por
exemplo: para recuperar o cpf de um funcionário, será
usado o método getCpf()
 Para modificar o estado de um objeto, são usados os
métodos setters, métodos set(). Por exemplo, para
modificar o salário de um funcionário, será usado o
método setSalario()
Exemplo
public class Pessoa {
private String nome;
private int idade;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
A classe Pessoa possui dois atributos, nome e idade, que definem seu estado. O método
getNome() recupera o nome do objeto, e o método setNome() permite modificar o nome
Instanciação de objetos
 Para declarar um objeto, usa-se a notação padrão, ou
seja, o tipo seguido de seu identificador. Por exemplo,
para declarar um objeto chamado p do tipo Pessoa:
Pessoa p;
 Para instanciar um objeto, é usada a palavra reservada
new. Por exemplo, para instanciar um objeto do tipo
Pessoa:
Pessoa p = new Pessoa();
Exemplo
Vamos instanciar um objeto da classe Pessoa,
modificar seu nome e recuperá-lo para exibição
num TextView
Exercício
 Acrescente à classe Pessoa os métodos getIdade() e
setIdade()
 Modifique a aplicação, para que ela atribua ao objeto p
um nome e uma idade entrados pelo teclado, e exiba
seus dados na tela
Construtor
 Permitem definir o estado inicial do objeto no
momento de sua instanciação
 Não têm tipo de retorno
 Seu identificador é o mesmo de sua classe
Exemplo
public class Pessoa {
private String nome;
private int idade;
public Pessoa(String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
}
Exemplo
Vamos instanciar um objeto da classe Pessoa, iniciar
seus atributos com o construtor, e recuperá-los
para exibição em TextViews
Listas dinâmicas
 São estruturas de dados dinâmicas, ou seja, não têm
sua capacidade definida na instanciação
 São implementadas pelas classes ArrayList e
LinkedList
Sintaxe
 Instanciação
 ArrayList identificador = new ArrayList();
 Inclusão de itens na lista
 identificador.add(item);
 Recuperação de itens
 identificador.get(índice);
 Tamanho da lista
 Identificador.size();
Exemplo
Vamos instanciar uma ArrayList, preenchê-la com os
valores 3, 4.5 e “Java” e exibí-los num TextView
Type Casting
 Entretanto, se quisermos atribuir algum dos itens da
lista a uma variável, não poderemos fazer
simplesmente:
 int x = al.get(0);
 Pois isso dará incompatibilidade de tipos (int à
esquerda, Object à direita)
 Para resolver isso, usamos type casting, ou coerção de
tipo:
 int x = (int)al.get(0);
Generics
 Porém, essa solução abre a possibilidade de erros em
tempo de execução, em caso de casting errado
 Se quisermos definir no momento da declaração o tipo
dos dados a ser inseridos na lista, usamos generics:
 ArrayList<tipo> identificador = new ArrayList<>();
Wrappers
 Entretanto, não podemos definir o tipo como um tipo
primitivo (int, double, boolean, etc)
 Por isso, se quisermos declarar nossa lista com tipos
como esses, usamos as classes wrappers
(empacotadoras):
 Integer para int, Double para double, Boolean para
boolean, etc)
Exemplo
Vamos instanciar uma ArrayList de inteiros, preenchê-la
com os valores 1, 2 e 3 e exibí-los num TextView
Exercício
 Implemente as classes:
 SomaLista, que preencha uma lista com os inteiros de 1
a 1000 e exiba na tela o somatório de seus itens
 MediaTurma, que leia as notas de n alunos (n entrado
pelo usuário), e exiba a nota média da turma
ListView
 ListView é um componente que mostra uma lista de
itens
 Os itens da lista são automaticamente inseridos
usando um adapter, implementado pela classe
ArrayAdapter, a partir de um fonte de dados, como
uma lista ou uma consulta a um BD
 O adapter é contruindo usando o contexto da
aplicação, o tipo de listView (em nosso caso,
android.R.layout.simple_list_item_1) e a fonte de
dados a preenchê-la
Exemplo
 Vamos instanciar uma ArrayList de Strings, populá-la
com valores arbitrários, e preencher com ela um
ListView
Exercício
 Implemente a aplicação Listagem, com a classe:
 NomeController, com o atributo estático alunos
(ArrayList<String>); o método estático void adicionar (String
nome) e o método estático getNomes();
 Duas activities:
 MainActivity, com um EditText; um botão para chamar o
método adicionar da classe NomeController, passando o
nome digitado no EditText; e um item de menu para a
transição para a segunda Activity
 ListaActivity, que exiba um ListView com os nomes
adicionados na primeira activity; e um item de menu
para voltar a MainActivity
Exercício
 Implemente a aplicação Academica, com as classes:
 Aluno, com os atributos nome (String), telefone (String)
e email (String); getters, setters e construtor
 AlunoController, com o atributo estático alunos
(ArrayList<Aluno>), o método estático void
adicionar(Aluno a) e o método estático getAlunos()
Exercício (continuação)
 Três activities:
 MainActivity, com um EditText; um botão para chamar o
método adicionar da classe NomeController, passando
um aluno com os dados digitados nos EditTexts; e um
item de menu para a transição para a segunda Activity
 ListaActivity, que exiba um ListView com os nomes
adicionados na primeira activity; e um item de menu
para voltar a MainActivity; um clique num item da lista
chamará a terceira activity
 DadosActivity, que exiba em TextViews os dados do
aluno selecionado em ListaActivity
Download

Curso Básico de Android