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

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

Transcript of Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvera Android.

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