35
Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Embed Size (px)

Citation preview

Page 1: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Tudo sobre listas em AndroidPaula Caroline da RosaDesenvolvera Android

Page 2: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Listas“É uma view group que disponibiliza uma lista de itens escroláveis” (Android developers)

Lista Simples Lista Customizada

AdapterView

Page 3: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Outras AdapterViews• AdapterView é uma view que precisa de um adapter

Listview

GridView

Spinner

Page 4: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Adapter• Adapter é responsável por fazer uma ponte entre um

conjunto de dados a ser mostrado e a Adapter View (listView, gridView, spinner)

• Cada item da lista passa a ser uma pequena view (linha);

• O controle é feito através da posição dos itens da lista;

Page 5: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista simples•Passo 1: O layout

▫Adicionar uma tag ListView dentro de um layout.

Page 6: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista simples•Passo 2: A activity

▫ Encontrar o id que referencia a lista no layout;▫ Criar um adapter, passando os parâmetros context,

layout e items▫ Setar o adapter na lista passando como parâmetro o

adapter criado;

Page 7: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista simples• Prós

▫Fácil de implementar;▫Serve como protótipo;▫Lista estática textos;

• Contras▫Não recicla a view;▫Só aceita textos;

Page 8: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Como uma lista é carregada

ScrollParaCima

Reciclando a view

Page 9: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

ViewHolder•Armazena cada componente (view) dentro

de uma tag.

•Previne que o método findViewById seja chamado a cada vez que for utilizado o scroll e a view ficar ativa

•Aumenta performance da lista, permitindo que seja “scrolada” de forma suave

Page 10: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista customizada• Cria-se um layout representando como será

cada linha da lista (custom_layout.xml)• Cria uma tag do tipo ListView dentro do

layout principal (activity_main.xml)• Utiliza o adapter para transformar o conteúdo

de cada linha em uma lista customizada

Page 11: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista customizada•Layout (custom_layout.xml)

Page 12: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista customizada• Adapter – extendendo de BaseAdapter

• Métodos: getCount() – Quantos itens serão representados por este adapter.

getItem(int position) – retorna o dado que está associado com a posição atual

getItemId(int position) – retorna o id da linha associada com a posição específica da lista

getView(int position, View convertView, ViewGroup parent) – retorna a view que corresponde ao dado na posição atual

Page 13: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista customizada• Estende o Adapter da classe BaseAdapter

Page 14: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista customizada•Métodos getcount, getItem e getItemId

Page 15: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista customizada•Implementa o método getView

Page 16: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista customizada•Layout da lista (activity_main.xml)

Page 17: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista customizada• Activity – setando os itens no adapter

(MainActivity.java)

Page 18: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando uma lista customizada

Page 19: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Outras formas•Extender a activity de ListActivity

•Utilizando um CursorLoader (dado do banco)

•Utilizando uma Asynctask com ViewHolder

Page 20: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Atualizando a lista•Use o método notifyDataSetChanged() ao

mudar a lista de itens.

Page 21: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Lidando com eventos• Evento de click – implementando a interface

AdapterView.OnItemClickListener

• Evento de usando a classe anônima que implementa a interface

Page 22: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Lidando com eventos•Evento de click longo

Page 23: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

RecyclerView• Criada na versão 5.0 do Android (Lollipop)• É um container que exibe dados que podem ser

scrolados de forma eficiente• Faz parte das libs de supporte

Page 24: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

RecyclerView

LinearLayoutManager GridLayoutManager StaggeredGridLayoutManager

Page 25: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

LayoutManager• Posiciona os itens dentro de uma

RecyclerView

• Determina quando as views deverão ser reaproveitadas

• Pode ser customizado (extendendo RecyclerView.LayoutManager), a fim de melhorias de performance e desempenho

Page 26: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

•No arquivo build.gradle, importar as dependências:

•Assim como na ListView, abra uma tag no layout chamando RecyclerView

Page 27: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Layout do item usando cardview• Abra uma tag no layout usando CardView

Page 28: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando o adapter• Extenda o adapter de

RecyclerView.Adapter<MeuAdapter.ViewHolder>

• Crie o ViewHolder

Page 29: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando o adapter•Implementando o método onCreateViewHolder

▫ Infla-se o layout ▫ Cria-se uma instância da classe ViewHolder passando a

view que foi criada▫ Retorna o ViewHolder com a view já inflada

Page 30: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando o adapter•Implementando o método onBindViewHolder

▫ Chamado pelo LayoutManager▫ Substitui o conteúdo da view

• Retornando o tamanho da lista

Page 31: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Criando a activity•Setando adapter na activity

Page 32: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

RecyclerView

Page 33: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Lidando com eventos• Sem OnItemClickListener (#mimimi )• Uma forma: seta o clickListener na view (do

construtor do ViewHolder criado)

Page 34: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Outras Vantagens•Otimização de performance;•Encontrar itens visíveis

(LinearLayoutManager)▫findFirstVisibleItemPosition/findLast(...)

•Informar adição/remoção de itens separadamente ▫notifyItemRemoved(pos)/

notifyItemInserted(pos)•ItemDecorator e ItemAnimator •Controle de reciclagem (scrap heap e

recycler pool)

Page 35: Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android

Contato•Twitter: @_paulacr•Blog: http://paulacr.net•E-mail: [email protected]

•Exemplos: ▫ https://github.com/paulacr/CriandoListaSimples▫ https://github.com/paulacr/CriandoListaCustomizada▫ https://github.com/paulacr/CriandoRecyclerView

• Mastering RecyclerView (Dave Smith) - https://www.youtube.com/watch?v=-C5I1DAviJ8