Upload
rayssa-gorjao-nunes
View
229
Download
6
Embed Size (px)
Citation preview
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: [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