O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Recyclerview

Mostre grandes conjuntos de dados na IU enquanto minimiza o uso de memória.

Esta tabela lista todos os artefatos no grupo androidx.recyclerview.

Artefato Versão estável atual Próximo candidato a lançamento Versão Beta Versão Alfa
recyclerview 1.1.0 - - 1.2.0-alpha05
recyclerview-selection 1.0.0 1.1.0-rc02 - -
Última atualização desta biblioteca: 2 de setembro de 2020

Declarar dependências

Para adicionar uma dependência ao RecyclerView, é preciso adicionar o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.

Adicione as dependências dos artefatos necessários no arquivo build.gradle para seu app ou módulo:

dependencies {
    implementation "androidx.recyclerview:recyclerview:1.1.0"
    // For control over item selection of both touch and mouse driven selection
    implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc03"
}

Para ver mais informações sobre dependências, consulte Adicionar dependências de compilação.

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas existentes (link em inglês) nesta biblioteca antes de criar um novo. Adicione seu voto a um problema existente clicando no botão de estrela.

Criar novo problema (link em inglês)

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.2.0

Versão 1.2.0-alpha05

22 de julho de 2020

Lançamento do androidx.recyclerview:recyclerview:1.2.0-alpha05. A versão 1.2.0-alpha05 contém essas confirmações.

Correções de bugs

  • Corrigimos o problema em que, se um RecyclerView tem apenas um item e ele está em foco, colocar o foco para frente ou para trás não funciona (6f36b3, link em inglês).
  • Correção de um ArrayIndexOutOfBoundsException em StaggeredGridLayoutManager (49b601, b/122303625, b/74877618, b/160193663, b/37086625).
  • Correção de um bug de medição em que, em circunstâncias específicas, o RecyclerView acaba não mostrando os filhos (89040c, b/138734786).

Contribuições externas

  • Agradecemos a Kol Krewinkel em nome do Facebook pela contribuição!

Versão 1.2.0-alpha04

24 de junho de 2020

Lançamento de androidx.recyclerview:recyclerview:1.2.0-alpha04. A versão 1.2.0-alpha04 contém essas confirmações (link em inglês).

Mudanças na API

  • O MergeAdapter foi renomeado para ConcatAdapter para evitar confusão com diferentes comportamentos de mesclagem de dados (c0540c, b/158019211, links em inglês).

Correções de bugs

  • Melhorias na rolagem automática quando todos os itens visíveis são removidos (fe8670, b/15044848, links em inglês).

Versão 1.2.0-alpha03

29 de abril de 2020

androidx.recyclerview:recyclerview:1.2.0-alpha03 é lançado. A versão 1.2.0-alpha03 contém essas confirmações (link em inglês).

Novos recursos

  • O RecyclerView agora tem um método nestedScrollBy que permite a rolagem programática que colabora com a rolagem aninhada: (Ibaa58, link em inglês)

Versão 1.2.0-alpha02

1º de abril de 2020

androidx.recyclerview:recyclerview:1.2.0-alpha02 é lançado. A versão 1.0.0-alpha05 contém essas confirmações (link em inglês).

Esta versão e as versões mais recentes do RecyclerView não são compatíveis com versões anteriores do ViewPager2. Se você estiver usando androidx.viewpager2:viewpager2:1.0.0 ou inferior, atualize para androidx.viewpager2:viewpager2:1.1.0-alpha01.

Novos recursos

  • MergeAdapter

    • MergeAdapter: um novo adaptador do RecyclerView que pode combinar vários adaptadores de forma linear.
    MyAdapter adapter1 = ...;
    AnotherAdapter adapter2 = ...;
    MergeAdapter merged = new MergeAdapter(adapter1, adapter2);
    recyclerView.setAdapter(mergedAdapter);
    

    Para o exemplo acima, o MergeAdapter apresentará itens de adapter1 seguidos por adapter2.

  • Restauração de estado lento de RecyclerView.Adapter:

    • Adicionada uma nova API à classe RecyclerView.Adapter, que permite ao adaptador controlar quando o estado do layout será restaurado.

    • Por exemplo, você pode chamar:

    myAdapter.setStateRestorationStrategy(StateRestorationStrategy.WHEN_NOT_EMPTY);
    

    para que o RecyclerView aguarde até que o adaptador não esteja vazio antes de restaurar a posição de rolagem.

  • CollectionInfo e CollectionItemInfo não serão mais preenchidos por padrão.

    • Se você quiser que os serviços de acessibilidade (Talkback, por exemplo) continuem indicando a contagem e o índice de itens para o usuário, preencha CollectionInfo e CollectionItemInfo manualmente.

    • Esses objetos não são mais preenchidos no framework, que não pode determinar a contagem de itens conforme percebida pelo usuário (como separadores, cabeçalhos ou itens RecyclerView que representam vários itens percebidos).

Correções de bugs

  • O RecyclerView agora evita se fixar em visualizações fora da janela de visualização quando o tamanho dela é modificado.
  • Correção de um bug no DiffUtil em que ele podia calcular a diferença incorretamente quando um item original na primeira lista fosse duplicado várias vezes na segunda lista. (b/123376278, link em inglês).

Versão 1.2.0-alpha01

18 de dezembro de 2019

Lançamento de androidx.recyclerview:recyclerview:1.2.0-alpha01. A versão 1.2.0-alpha01 contém essas confirmações (link em inglês).

Correções de bugs

  • Correção de pequenos problemas relacionados ao desenho da direita para a esquerda (RTL, na sigla em inglês) e à precisão do toque no FastScroller (b/143789932, aosp/1130438, links em inglês)
  • Correção de uma falha no ItemTouchHelper durante a remoção do RecyclerView enquanto animações do ItemTouchHelper estavam em execução (b/140447176, aosp/1167575, links em inglês)

Versão 1.1.0

Versão 1.1.0

20 de novembro de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0. A versão 1.0.0 contém essas confirmações (link em inglês).

Mudanças importantes desde a versão 1.0.0

  • PagerSnapHelper e LinearSnapHelper agora consideram o padding do RecyclerView, independentemente do valor de clipToPadding (b/139452422, b/139012032, aosp/1103182, aosp/1106715, aosp/1130728, links em inglês)
  • O uso de RecyclerView.setLayoutTransition(LayoutTransition) foi formalmente suspenso e gerará uma IllegalArgumentException quando chamado com um valor não nulo. Use RecyclerView.setItemAnimator(ItemAnimator). (aosp/839414, link em inglês)
  • aosp/723649 (link em inglês): o RecyclerView agora implementa o NestedScrollingChild3, permitindo que ele seja informado quando todos os pais de rolagem aninhados correspondentes pararem de consumir distâncias de rolagem aninhadas. Se o código do desenvolvedor atualmente modificar RecyclerView.onNestedScroll(View, int, int, int, int, int), ele provavelmente não será mais chamado e RecyclerView.onNestedScroll(View, int, int, int, int, int, int[]) precisará ser substituído.
  • O RecyclerView agora tem um atributo de estilo padrão, recyclerViewStyle, que permite a configuração do estilo padrão no seu tema.
  • A API de ações de acessibilidade do ViewCompat não interrompe mais o RecyclerView ItemDelegate.
  • LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) pode ser modificado para personalizar a quantidade de espaço extra de layout que precisa ser adicionada a cada lado da RecyclerView associada. (aosp/931259, link em inglês)
  • Adição de uma nova sobrecarga de smoothScrollBy: RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration), que permite especificar uma duração em milésimos de segundo, determinando quanto tempo terá a animação (aosp/952807, link em inglês)

Versão 1.1.0-rc01

23 de outubro de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0-rc01. A versão 1.0.0-rc01 contém essas confirmações (link em inglês).

Correções de bugs

  • Correção de um erro "O app não está respondendo" ao modificar RecyclerViewAccessibilityDelegate.ItemDelegate (aosp/1138057, aosp/1133434, links em inglês)

Versão 1.1.0-beta01

9 de outubro de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0-beta05. Versão 1.0.0-beta05 contém essas confirmações (link em inglês).

Mudanças na API

  • Acompanhando aosp/1106715 e aosp/1103182 (links em inglês), agora LinearSnapHelper e PagerSnapHelper retornarão a visualização que está no centro dos limites do RecyclerView, sem contar o padding, independentemente do valor de clipToPadding. (aosp/1130728, link em inglês)

Correções de bugs

  • Correção de um problema em que o RecyclerView gerava nós de acessibilidade duplicados para filhos do RecyclerView. (aosp/1130618, link em inglês)
  • Correção de um problema em que as hierarquias de acessibilidade virtual em RecyclerViews não funcionavam.
  • Correção de um problema em que os ItemDelegates personalizados não eram usados.

Versão 1.1.0-beta01

5 de setembro de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0-beta04. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Correções de bugs

  • PagerSnapHelper e LinearSnapHelper agora consideram o padding do RecyclerView, independentemente do valor de clipToPadding (b/139452422, b/139012032, aosp/1103182, aosp/1106715, links em inglês)
  • Correção de um bug em que o RecyclerView não cancelava a permissão da interceptação de toque ao rolar, quando a pré-rolagem aninhada fazia com que um NestedScrollingParent rolasse. (b/138668210, aosp/1105373, links em inglês). Isso beneficia bibliotecas como ViewPager2.
  • O RecyclerView agora vai consistentemente para SCROLL_STATE_DRAGGING antes que as rolagens prévias aninhadas sejam despachadas (aosp/1105373, link em inglês)
  • A rolagem prévia aninhada não é mais executada antes que o gesto exceda a tolerância de toque (b/139530818, aosp/1105373, links em inglês)
  • Os argumentos dx e dy enviados para rolagens prévias aninhadas são zerados quando o RecyclerView não pode rolar nessa direção (aosp/1105373, link em inglês)

Versão 1.1.0-beta03

15 de agosto de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0-beta03. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Mudanças na API

  • O RecyclerView agora envia distâncias de rolagem por View.onScrollChanged(int l, int t, int oldl, int oldt) de modo que os serviços de acessibilidade sejam notificados com precisão sobre as alterações de rolagem. (aosp/1007823, link em inglês)

Correções de bugs

  • Correção de um bug importante de pilha excedente relacionado ao RecyclerView e à acessibilidade. (aosp/1099577, link em inglês)

Versão 1.1.0-beta02

7 de agosto de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0-beta02. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • O RecyclerView agora tem um atributo de estilo padrão, recyclerViewStyle, que permite a configuração do estilo padrão no seu tema.

Correções de bugs

  • Correção de um bug em que o RecyclerView não cancelava a permissão da interceptação de toque ao rolar, fazendo com que um NestedScrollingParent rolasse. (b/131115697, aosp/1055911, links em inglês)

Versão 1.1.0-beta01

2 de julho de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0-beta01. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • O RecyclerView agora participa da rolagem aninhada quando uma rolagem é iniciada por meio de eventos de acessibilidade. (aosp/973584, link em inglês)

Versão 1.1.0-alpha06

5 de junho de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0-alpha06 e androidx.recyclerview:recyclerview-selection:1.1.0-alpha06. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • Adição de uma nova sobrecarga de smoothScrollBy: RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration), que permite especificar uma duração em milésimos de segundo, determinando quanto tempo terá a animação (aosp/952807, link em inglês)

Mudanças na API

  • GridLayoutManager e StaggeredGridLayoutManager não rotulam mais automaticamente os itens de abrangência completa, como cabeçalhos para fins de acessibilidade (aosp/969703, link em inglês)
  • Preservação da ordem de seleção (por hora de criação) em recyclerview-selection (aosp/937279, link em inglês)

Correções de bugs

  • Correção de um bug em que RecyclerView era lançado com velocidades incorretas durante uma situação de rolagem aninhada. (aosp/961642, link em inglês)
  • Adição de melhorias de estabilidade em recyclerview-selection (aosp/960213, aosp/926296, links em inglês)

Versão 1.1.0-alpha05

7 de maio de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0-alpha05 e androidx.recyclerview:recyclerview-selection:1.1.0-alpha05. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) pode ser modificado para personalizar a quantidade de espaço extra de layout que precisa ser adicionada a cada lado da RecyclerView associada. (aosp/931259, link em inglês)

Mudanças na API

  • Adicionar API para recuperar o drawable DividerItemDecoration (aosp/937282, link em inglês)
  • Suspender o uso de LinearLayout.getExtraLayoutSpace(RecyclerVew.State) em favor de um novo mecanismo que permite ter mais espaço de layout personalizado nos dois lados. O novo método é LinearLayout.calculateExtraLayoutSpace(RecyclerView.state, int[]) (aosp/931259, link em inglês)

Correções de bugs

  • Limpeza na seleção Gesture. (aosp/940781, link em inglês)
  • A ordem de seleção (por hora de criação) foi preservada. (b/128455535)

Versão 1.1.0-alpha04

3 de abril de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0-alpha04. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Correções de bugs

  • Anteriormente, RV OnItemTouchListener não podia interceptar em ACTION_UP, impedindo que OnItemTouchListener bloqueasse a resposta de outro código a ACTION_UP. Esse problema foi corrigido. (aosp/916137)

Versão 1.1.0-alpha03

13 de março de 2019

Lançamento de androidx.recyclerview:recyclerview:1.1.0-alpha03. A lista completa de confirmações incluídas nessa versão pode ser encontrada neste link (link em inglês).

Novos recursos

  • GridLayoutManager: estimativa de dimensões da barra de rolagem do GridLayoutManager de resolução mais alta para ativação (aosp/838836, link em inglês):
    • Usa informações de abrangência para estimar as dimensões da barra de rolagem de um GridLayoutManager.
    • Para ativar, chame GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) transmitindo em "true".
    • Consulte a documentação sobre GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) para ter mais informações.

Correções de bugs

  • Accessibility: ocorreu um bug em que, quando um ViewHolder era reciclado e recuperado, o ItemDelegate associado ao RecyclerViewAccessibilityDelegate do RecyclerView não era associado ao itemView do ViewHolder, interrompendo Accessibility. Esse problema foi corrigido. (aosp/917740, link em inglês).

Versão 1.1.0-alpha02

30 de janeiro de 2019

Lançamento do androidx.recyclerview:recyclerview 1.1.0-alpha02.

Mudanças na API

  • Suspensão do uso de RecyclerView.setLayoutFrozen(boolean) e RecyclerView.isLayoutFrozen() em favor de RecyclerView.suppressLayout(boolean) e RecyclerView.isLayoutSuppressed(). (aosp/839414, link em inglês)
  • O uso de RecyclerView.setLayoutTransition(LayoutTransition) foi formalmente suspenso e gerará uma IllegalArgumentException quando chamado com um valor não nulo. (aosp/839414, link em inglês)

Correções de bugs

  • Correção de bug no RV em que o SmoothScroller nunca era interrompido (aosp/843741, link em inglês)
  • Correção do bug em que SCROLL_STATE_IDLE não podia ser chamado no fim de uma animação de rolagem. (aosp/812576, link em inglês)

Versão 1.1.0-alpha01

3 de dezembro de 2018

Lançamento de androidx.recyclerview 1.1.0-alpha01 e androidx.recyclerview-selection 1.1.0-alpha01.

androidx.recyclerview 1.1.0-alpha01

Mudanças na API

  • aosp/723649 (link em inglês): o RecyclerView agora implementa o NestedScrollingChild3, permitindo que ele seja informado quando todos os pais de rolagem aninhados correspondentes pararem de consumir distâncias de rolagem aninhadas. Se o código do desenvolvedor atualmente modificar RecyclerView.onNestedScroll(View, int, int, int, int, int), ele provavelmente não será mais chamado e RecyclerView.onNestedScroll(View, int, int, int, int, int, int[]) precisará ser substituído.

Correções de bugs

  • Correção de uma falha ao usar TransitionManager para recolher/expandir um item em RecyclerView ( b/37129527, link em inglês).
  • Correção do bug em que o comportamento de RecyclerView.OnItemTouchListener era inconsistente com o comportamento de onInterceptTouchEvent e onTouchEvent (aosp/721235, link em inglês)
  • Correção de alguns bugs de caso de borda relacionados à rolagem suave. (aosp/729718, aosp/747168, aosp/812576, links em inglês)
  • Estratégia de ajuste corrigida no PagerSnapHelper para lidar com visualizações secundárias não típicas (aosp/795752, link em inglês)

androidx.recyclerview-selection 1.1.0-alpha01

Correções de bugs

  • Correção de ConcurrentModificationException quando o conjunto de dados mudava com a remoção da seleção.

RecyclerView-Selection versão 1.1.0

RecyclerView-Selection versão 1.1.0-rc02

2 de setembro de 2020

Lançamento do androidx.recyclerview:recyclerview-selection:1.1.0-rc02. A versão 1.0.0-rc02 contém essas confirmações.

Destaques

  • Resolvidas várias regressões da 1.0 no processamento de entrada.
  • Biblioteca atualizada para respeitar onRequestDisallowInterceptTouchEvent, permitindo que funcione bem com o ItemTouchHelper, bastando deslizar para fora da tela.

Correções de bugs

  • Correção do problema em que a biblioteca de seleção interpretava incorretamente eventos GestureDetector, resultando na perda de toques durante a seleção ativa (b/165030422).
  • Correção do problema em que a seleção não era atualizada para refletir os itens removidos do adaptador (b/138932671).
  • Corrigido o problema em que os itens do RecyclerView disparavam eventos onClick enquanto o SelectionTracker tinha seleção ativa (b/161162268).
  • Agora onRequestDisallowInterceptTouchEvent é processado corretamente.
  • Corrigido o problema em que a mensagem ”Cannot call this method in a scroll callback” era vista durante a rolagem do mouse no Android Q.
  • Documentos atualizados, especialmente em StableIdKeyProvider, para declarar claramente os requisitos da instância de RecyclerView.

Recyclerview-Selection versão 1.1.0-rc01

5 de fevereiro de 2020

androidx.recyclerview:recyclerview-selection:1.1.0-rc01 é lançado. A versão 1.0.0-rc01 contém essas confirmações (link em inglês).

Correções de bugs

  • Correção de um problema em que o RecyclerView apresenta rolagem difícil quando interage com um AppBarLayout rolável (aosp/1193934, link em inglês).

RecyclerView-Selection Versão 1.1.0-beta01

4 de dezembro de 2019

Lançamento de androidx.recyclerview:recyclerview-selection:1.1.0-beta01. A versão 1.1.0-beta01 contém essas confirmações (link em inglês).

Melhorias gerais na estabilidade das verificações defensivas e do gerenciamento do estado interno.

Correções de bugs

  • Melhor gerenciamento do estado da biblioteca e da interpretação de eventos CANCEL, resultando em melhorias na estabilidade.

Mudanças na API

  • Adição de um parâmetro de tipo de chave de seleção ausente em classes e métodos.
  • Métodos obsoletos:
    • SelectionTracker.Builder#withPointerTooltype
    • SelectionTracker.Builder#withGestureTooltype
    • Esses métodos existiam para que desenvolvedores pudessem mapear comportamentos de ponteiro ou gesto em tipos de ferramentas diferentes do padrão*. A intenção era boa, mas o uso mostrou que as expectativas do usuário para o comportamento de entrada são muito específicas em relação ao tipo de ferramenta. Além disso, as stylus "passivas" são do tipo FINGER no que diz respeito ao sistema de entrada do Android.
    • Os tipos de ferramentas padrão são FINGER para Gesto e MOUSE para Ponteiro.