Personalizar uma lista dinâmica Parte do Android Jetpack.
Você pode personalizar
RecyclerView
para atender às suas necessidades específicas. As classes padrão descritas
Criar listas dinâmicas com
A RecyclerView oferece todas as funcionalidades de que a maioria dos desenvolvedores precisa. Em
em muitos casos, você só precisa projetar a visualização para cada armazenador de visualização e escrever o
para atualizar essas visualizações com os dados apropriados. No entanto, se o app tiver
requisitos específicos, é possível modificar o comportamento padrão de várias maneiras.
Este documento descreve algumas das possíveis personalizações.
Modificar o layout
O RecyclerView
usa um gerenciador de layout para posicionar a imagem
itens na tela e para determinar quando reutilizar visualizações de itens que não estão mais
ficam visíveis para o usuário. Para reutilizar (ou reciclar) uma visualização ou um layout
de vídeo pode solicitar que o adaptador substitua o conteúdo da visualização por um
um elemento diferente do conjunto de dados. As visualizações de reciclagem dessa forma melhoram
desempenho, evitando a criação de visualizações desnecessárias ou a execução
caras
findViewById()
pesquisas. A Biblioteca de Suporte do Android inclui três gerenciadores de layout padrão:
, que oferece muitas opções de personalização:
LinearLayoutManager
: organiza os itens em uma lista unidimensional. Ao usar umRecyclerView
comLinearLayoutManager
fornece funcionalidade, como umListView
o mesmo layout organizacional.GridLayoutManager
: organiza os itens em uma grade bidimensional, como os quadrados em uma quadriculado. Usar umRecyclerView
com OGridLayoutManager
oferece funcionalidades comoGridView
o mesmo layout organizacional.StaggeredGridLayoutManager
: organiza os itens em uma grade bidimensional, com cada coluna ligeiramente deslocada como as estrelas em uma bandeira dos EUA.
Caso esses gerenciadores de layout não atendam às suas necessidades, crie seu próprio gerenciador
estendendo
RecyclerView.LayoutManager
abstrata.
Adicionar animações de itens
Sempre que um item muda, o RecyclerView
usa um animador.
para mudar sua aparência. Esse animador é um objeto que estende o
RecyclerView.ItemAnimator
. Por padrão, o RecyclerView
usa
DefaultItemAnimator
para fornecer a animação. Se você quiser fornecer animações personalizadas, é possível
defina seu próprio objeto animador estendendo
RecyclerView.ItemAnimator
:
Ativar a seleção de itens de lista
A
recyclerview-selection
permite que os usuários selecionem itens em uma lista de RecyclerView
usando toques
ou entrada do mouse. Isso permite que você mantenha o controle sobre a apresentação visual de um
item selecionado. Você também pode manter o controle sobre as políticas que controlam a seleção
do aplicativo, como quais itens são qualificados para seleção e quantos
ser selecionados.
Para adicionar suporte à seleção a uma instância RecyclerView
, siga
estas etapas:
- Determine o tipo de chave de seleção a ser usado e crie uma
ItemKeyProvider
Existem três tipos de chaves que você pode usar para identificar itens selecionados:
Parcelable
e as subclasses, comoUri
String
Long
Para informações detalhadas sobre os tipos de chave de seleção, consulte
SelectionTracker.Builder
: - Implementação
ItemDetailsLookup
: - Atualizar item
View
objeto em oRecyclerView
para refletir se o usuário seleciona ou desmarca-as.A biblioteca de seleção não fornece uma decoração visual padrão para o itens selecionados. Forneça isso ao implementar
onBindViewHolder()
: Recomendamos a seguinte abordagem:- No
onBindViewHolder()
, chamesetActivated()
, nãosetSelected()
—ativado o objetoView
comtrue
oufalse
, dependendo se o item é selecionada. - Atualize o estilo da visualização para representar o status ativado. Qa recomendam o uso de uma estado de cor recurso de lista para configurar o estilo.
- No
- Usar o
ActionMode
para fornecer ao usuário ferramentas para executar uma ação na seleção. - Realizar qualquer ação secundária interpretada.
- Montar tudo com
SelectionTracker.Builder
. - Incluir seleção no atividade ciclo de vida.
ItemDetailsLookup
permite que a biblioteca de seleção acesse
informações sobre RecyclerView
itens de acordo com um
MotionEvent
É, efetivamente, uma fábrica
ItemDetails
que são respaldados por uma instância ou extraídas dela.
RecyclerView.ViewHolder
instância.
Registrar um
SelectionTracker.SelectionObserver
para receber uma notificação
quando uma seleção for alterada. Quando uma seleção é criada,
iniciar ActionMode
para apresentar isso ao usuário e fornecer
ações específicas da seleção. Por exemplo, você pode adicionar um botão "Excluir" ao
Barra ActionMode
e conecte a seta para trás na barra para limpar
a seleção. Quando a seleção fica vazia, se o usuário limpar o
seleção da última vez: encerre o modo de ação.
Ao final do pipeline de processamento de eventos, a biblioteca pode determinar
que o usuário está tentando ativar um item, tocando nele ou
tentar arrastar um item ou conjunto de itens selecionados. Reaja a essas
interpretações registrando o listener apropriado. Para mais
informações, consulte
SelectionTracker.Builder
:
O exemplo abaixo mostra como juntar essas peças:
Kotlin
var tracker = SelectionTracker.Builder( "my-selection-id", recyclerView, StableIdKeyProvider(recyclerView), MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build()
Java
SelectionTracker tracker = new SelectionTracker.Builder<>( "my-selection-id", recyclerView, new StableIdKeyProvider(recyclerView), new MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build();
Para criar um
SelectionTracker
seu app precisa fornecer os mesmos dados
RecyclerView.Adapter
que você usa para inicializar o RecyclerView
para
SelectionTracker.Builder
. Por esse motivo, depois de criar
SelectionTracker
, injete-o no
RecyclerView.Adapter
. Caso contrário, não será possível verificar a propriedade
status selecionado do método onBindViewHolder()
.
Para preservar o estado da seleção nos eventos de ciclo de vida da atividade, o app
precisa chamar o método
onSaveInstanceState()
e
onRestoreInstanceState()
da atividade
onSaveInstanceState()
e
onRestoreInstanceState()
, respectivamente. O app também precisa fornecer um ID de seleção exclusivo ao
construtor SelectionTracker.Builder
. Esse ID é necessário porque
uma atividade ou um fragmento pode ter mais de uma lista distinta e selecionável;
que precisam ser mantidos no estado salvo.
Outros recursos
Consulte as referências a seguir para mais informações.
- Girassol
de demonstração, que usa
RecyclerView
. - Use RecyclerView para mostrar uma lista rolável.
- No Android Conceitos básicos do Kotlin: conceitos básicos da RecyclerView (em inglês).