tudo sobre listas em android paula caroline da rosa desenvolvera android

Post on 07-Apr-2016

229 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Tudo sobre listas em AndroidPaula Caroline da RosaDesenvolvera Android

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

Lista Simples Lista Customizada

AdapterView

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

Listview

GridView

Spinner

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;

Criando uma lista simples•Passo 1: O layout

▫Adicionar uma tag ListView dentro de um layout.

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;

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;

Como uma lista é carregada

ScrollParaCima

Reciclando a view

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

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

Criando uma lista customizada•Layout (custom_layout.xml)

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

Criando uma lista customizada• Estende o Adapter da classe BaseAdapter

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

Criando uma lista customizada•Implementa o método getView

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

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

(MainActivity.java)

Criando uma lista customizada

Outras formas•Extender a activity de ListActivity

•Utilizando um CursorLoader (dado do banco)

•Utilizando uma Asynctask com ViewHolder

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

mudar a lista de itens.

Lidando com eventos• Evento de click – implementando a interface

AdapterView.OnItemClickListener

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

Lidando com eventos•Evento de click longo

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

RecyclerView

LinearLayoutManager GridLayoutManager StaggeredGridLayoutManager

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

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

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

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

Criando o adapter• Extenda o adapter de

RecyclerView.Adapter<MeuAdapter.ViewHolder>

• Crie o ViewHolder

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

Criando o adapter•Implementando o método onBindViewHolder

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

• Retornando o tamanho da lista

Criando a activity•Setando adapter na activity

RecyclerView

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

construtor do ViewHolder criado)

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)

Contato•Twitter: @_paulacr•Blog: http://paulacr.net•E-mail: paula.mecatronica@gmail.com

•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

top related