SlideShare una empresa de Scribd logo
1 de 35
Tudo sobre listas em Android
Paula Caroline da Rosa
Desenvolvedora 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
Scroll
Para
Cima
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

Más contenido relacionado

Similar a Listas em Android

Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)Erisvaldo Junior
 
Android 02 - Recycler View Adapter
Android 02 - Recycler View AdapterAndroid 02 - Recycler View Adapter
Android 02 - Recycler View AdapterAline Borges
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Maurício Linhares
 
Aula03 android layouts_views
Aula03 android layouts_viewsAula03 android layouts_views
Aula03 android layouts_viewsRoberson Alves
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1Bruno Catão
 
Curso de Ruby on Rails - Aula 03
Curso de Ruby on Rails - Aula 03Curso de Ruby on Rails - Aula 03
Curso de Ruby on Rails - Aula 03Maurício Linhares
 
Aula05 - Android - Persistência
Aula05 - Android - PersistênciaAula05 - Android - Persistência
Aula05 - Android - PersistênciaArthur Emanuel
 
Curso de Ruby on Rails - Aula 02
Curso de Ruby on Rails - Aula 02Curso de Ruby on Rails - Aula 02
Curso de Ruby on Rails - Aula 02Maurício Linhares
 
03_aperfeicoando a interface.pdf
03_aperfeicoando a interface.pdf03_aperfeicoando a interface.pdf
03_aperfeicoando a interface.pdfJoao Neves
 
Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7Erisvaldo Junior
 
365on Lab Asp.Net MVC Fundamentos 01 Overview
365on Lab Asp.Net MVC Fundamentos 01 Overview365on Lab Asp.Net MVC Fundamentos 01 Overview
365on Lab Asp.Net MVC Fundamentos 01 OverviewAlexsandro Almeida
 
asdasdasdsadasdsadasd
asdasdasdsadasdsadasdasdasdasdsadasdsadasd
asdasdasdsadasdsadasdMariaa Maria
 
Workshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsWorkshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsFábio Elísio
 
ZF Básico - 5. Modelo
ZF Básico - 5. ModeloZF Básico - 5. Modelo
ZF Básico - 5. ModeloMarcos Bezerra
 
SelectionTracker Para Seleção de Itens no RecyclerView Android
SelectionTracker Para Seleção de Itens no RecyclerView AndroidSelectionTracker Para Seleção de Itens no RecyclerView Android
SelectionTracker Para Seleção de Itens no RecyclerView AndroidVinícius Thiengo
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Saulo Vallory
 

Similar a Listas em Android (20)

Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
 
Android 02 - Recycler View Adapter
Android 02 - Recycler View AdapterAndroid 02 - Recycler View Adapter
Android 02 - Recycler View Adapter
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01
 
Aula03 android layouts_views
Aula03 android layouts_viewsAula03 android layouts_views
Aula03 android layouts_views
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1
 
Curso de Ruby on Rails - Aula 03
Curso de Ruby on Rails - Aula 03Curso de Ruby on Rails - Aula 03
Curso de Ruby on Rails - Aula 03
 
Aula05 - Android - Persistência
Aula05 - Android - PersistênciaAula05 - Android - Persistência
Aula05 - Android - Persistência
 
Curso de Ruby on Rails - Aula 02
Curso de Ruby on Rails - Aula 02Curso de Ruby on Rails - Aula 02
Curso de Ruby on Rails - Aula 02
 
03_aperfeicoando a interface.pdf
03_aperfeicoando a interface.pdf03_aperfeicoando a interface.pdf
03_aperfeicoando a interface.pdf
 
Android Destin
Android DestinAndroid Destin
Android Destin
 
Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7
 
365on Lab Asp.Net MVC Fundamentos 01 Overview
365on Lab Asp.Net MVC Fundamentos 01 Overview365on Lab Asp.Net MVC Fundamentos 01 Overview
365on Lab Asp.Net MVC Fundamentos 01 Overview
 
asdasdasdsadasdsadasd
asdasdasdsadasdsadasdasdasdasdsadasdsadasd
asdasdasdsadasdsadasd
 
Notas ado1
Notas ado1Notas ado1
Notas ado1
 
rytyeyyey
rytyeyyeyrytyeyyey
rytyeyyey
 
Workshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsWorkshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.js
 
React js
React js React js
React js
 
ZF Básico - 5. Modelo
ZF Básico - 5. ModeloZF Básico - 5. Modelo
ZF Básico - 5. Modelo
 
SelectionTracker Para Seleção de Itens no RecyclerView Android
SelectionTracker Para Seleção de Itens no RecyclerView AndroidSelectionTracker Para Seleção de Itens no RecyclerView Android
SelectionTracker Para Seleção de Itens no RecyclerView Android
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0
 

Listas em Android

  • 1. Tudo sobre listas em Android Paula Caroline da Rosa Desenvolvedora Android
  • 2. Listas “É uma view group que disponibiliza uma lista de itens escroláveis” (Android developers) Lista Simples Lista Customizada AdapterView
  • 3. Outras AdapterViews • AdapterView é uma view que precisa de um adapter Listview GridView Spinner
  • 4. 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;
  • 5. Criando uma lista simples • Passo 1: O layout ▫ Adicionar uma tag ListView dentro de um layout.
  • 6. 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;
  • 7. 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;
  • 8. Como uma lista é carregada Scroll Para Cima Reciclando a view
  • 9. 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
  • 10. 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
  • 11. Criando uma lista customizada • Layout (custom_layout.xml)
  • 12. 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
  • 13. Criando uma lista customizada • Estende o Adapter da classe BaseAdapter
  • 14. Criando uma lista customizada • Métodos getcount, getItem e getItemId
  • 15. Criando uma lista customizada • Implementa o método getView
  • 16. Criando uma lista customizada • Layout da lista (activity_main.xml)
  • 17. Criando uma lista customizada • Activity – setando os itens no adapter (MainActivity.java)
  • 18. Criando uma lista customizada
  • 19. Outras formas • Extender a activity de ListActivity • Utilizando um CursorLoader (dado do banco) • Utilizando uma Asynctask com ViewHolder
  • 20. Atualizando a lista • Use o método notifyDataSetChanged() ao mudar a lista de itens.
  • 21. Lidando com eventos • Evento de click – implementando a interface AdapterView.OnItemClickListener • Evento de usando a classe anônima que implementa a interface
  • 22. Lidando com eventos • Evento de click longo
  • 23. 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
  • 25. 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
  • 26. • No arquivo build.gradle, importar as dependências: • Assim como na ListView, abra uma tag no layout chamando RecyclerView
  • 27. Layout do item usando cardview • Abra uma tag no layout usando CardView
  • 28. Criando o adapter • Extenda o adapter de RecyclerView.Adapter<MeuAdapter.ViewHolder> • Crie o ViewHolder
  • 29. 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
  • 30. Criando o adapter • Implementando o método onBindViewHolder ▫ Chamado pelo LayoutManager ▫ Substitui o conteúdo da view • Retornando o tamanho da lista
  • 31. Criando a activity • Setando adapter na activity
  • 33. Lidando com eventos • Sem OnItemClickListener (#mimimi ) • Uma forma: seta o clickListener na view (do construtor do ViewHolder criado)
  • 34. 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)
  • 35. 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