Tudo sobre listas no android
-
Upload
paula-caroline-da-rosa -
Category
Mobile
-
view
996 -
download
1
Transcript of Tudo sobre listas no android
![Page 1: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/1.jpg)
Tudo sobre listas em AndroidPaula Caroline da RosaDesenvolvedora Android
![Page 2: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/2.jpg)
Listas“É uma view group que disponibiliza uma lista de itens escroláveis” (Android developers)
Lista Simples Lista Customizada
AdapterView
![Page 3: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/3.jpg)
Outras AdapterViews• AdapterView é uma view que precisa de um adapter
Listview
GridView
Spinner
![Page 4: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/4.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/5.jpg)
Criando uma lista simples•Passo 1: O layout
▫Adicionar uma tag ListView dentro de um layout.
![Page 6: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/6.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/7.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/8.jpg)
Como uma lista é carregada
ScrollParaCima
Reciclando a view
![Page 9: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/9.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/10.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/11.jpg)
Criando uma lista customizada•Layout (custom_layout.xml)
![Page 12: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/12.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/13.jpg)
Criando uma lista customizada• Estende o Adapter da classe BaseAdapter
![Page 14: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/14.jpg)
Criando uma lista customizada•Métodos getcount, getItem e getItemId
![Page 15: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/15.jpg)
Criando uma lista customizada•Implementa o método getView
![Page 16: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/16.jpg)
Criando uma lista customizada•Layout da lista (activity_main.xml)
![Page 17: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/17.jpg)
Criando uma lista customizada• Activity – setando os itens no adapter
(MainActivity.java)
![Page 18: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/18.jpg)
Criando uma lista customizada
![Page 19: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/19.jpg)
Outras formas•Extender a activity de ListActivity
•Utilizando um CursorLoader (dado do banco)
•Utilizando uma Asynctask com ViewHolder
![Page 20: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/20.jpg)
Atualizando a lista•Use o método notifyDataSetChanged() ao
mudar a lista de itens.
![Page 21: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/21.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/22.jpg)
Lidando com eventos•Evento de click longo
![Page 23: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/23.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/24.jpg)
RecyclerView
LinearLayoutManager GridLayoutManager StaggeredGridLayoutManager
![Page 25: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/25.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/26.jpg)
•No arquivo build.gradle, importar as dependências:
•Assim como na ListView, abra uma tag no layout chamando RecyclerView
![Page 27: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/27.jpg)
Layout do item usando cardview• Abra uma tag no layout usando CardView
![Page 28: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/28.jpg)
Criando o adapter• Extenda o adapter de
RecyclerView.Adapter<MeuAdapter.ViewHolder>
• Crie o ViewHolder
![Page 29: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/29.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/30.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/31.jpg)
Criando a activity•Setando adapter na activity
![Page 32: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/32.jpg)
RecyclerView
![Page 33: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/33.jpg)
Lidando com eventos• Sem OnItemClickListener (#mimimi )• Uma forma: seta o clickListener na view (do
construtor do ViewHolder criado)
![Page 34: Tudo sobre listas no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/34.jpg)
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 no android](https://reader030.fdocuments.net/reader030/viewer/2022012914/58efa0671a28ab88218b4607/html5/thumbnails/35.jpg)
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