Personalizar uma lista dinâmica Parte do Android Jetpack.

Testar o Compose
O Jetpack Compose é o kit de ferramentas de interface recomendado para Android. Aprenda a trabalhar com layouts no Compose.

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 um RecyclerView com LinearLayoutManager fornece funcionalidade, como um ListView o mesmo layout organizacional.
  • GridLayoutManager: organiza os itens em uma grade bidimensional, como os quadrados em uma quadriculado. Usar um RecyclerView com O GridLayoutManager oferece funcionalidades como GridView 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:

  1. 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:

    Para informações detalhadas sobre os tipos de chave de seleção, consulte SelectionTracker.Builder:

  2. Implementação ItemDetailsLookup:
  3. 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.

  4. Atualizar item View objeto em o RecyclerView 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(), chame setActivated(), não setSelected()—ativado o objeto View com true ou false, 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.
  5. Usar o ActionMode para fornecer ao usuário ferramentas para executar uma ação na seleção.
  6. 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.

  7. Realizar qualquer ação secundária interpretada.
  8. 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:

  9. Montar tudo com SelectionTracker.Builder.
  10. 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().

  11. Incluir seleção no atividade ciclo de vida.
  12. 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.