Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Recyclerview

Muestra grandes conjuntos de datos en tu IU y, a la vez, minimiza el uso de memoria.
Actualización más reciente Versión estable actual Próxima versión potencial Versión Beta Versión Alfa
22 de julio de 2020 1.1.0 - - 1.2.0-alpha05

Cómo declarar dependencias

Para agregar una dependencia en RecyclerView, debes agregar el repositorio Maven de Google a tu proyecto. Consulta el repositorio Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o 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 obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes en esta biblioteca antes de crear uno nuevo. Para agregar tu voto a un error existente, haz clic en el botón de la estrella.

Cómo crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Versión 1.2.0

Versión 1.2.0-alpha05

22 de julio de 2020

Lanzamiento de androidx.recyclerview:recyclerview:1.2.0-alpha05. La versión 1.2.0-alpha05 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió el error por el cual, si un objeto RecyclerView solo tiene un elemento y está enfocado, enfocar hacia delante o hacia atrás no moverá el enfoque. (6f36b3)
  • Se corrigió el elemento ArrayIndexOutOfBoundsException en el objeto StaggeredGridLayoutManager. (49b601, b/122303625, b/74877618, b/160193663, b/37086625)
  • Se corrigió un error de medición en el que, en circunstancias específicas, el objeto RecyclerView no mostraba, de forma inapropiada, sus elementos secundarios. (89040c, b/138734786)

Contribuciones externas

  • Agradecimientos a Kolin Krewinkel en nombre de Facebook por la contribución.

Versión 1.2.0-alpha04

24 de junio de 2020

Lanzamiento de androidx.recyclerview:recyclerview:1.2.0-alpha04. La versión 1.2.0-alpha04 contiene estas confirmaciones.

Cambios en la API

  • Se modificó el nombre de MergeAdapter por ConcatAdapter para evitar confusiones con diferentes comportamientos de combinación de datos (c0540c, b/158019211).

Correcciones de errores

  • Mejoras en el desplazamiento automático cuando se quitan todos los elementos visibles (fe8670, b/154124815)

Versión 1.2.0-alpha03

29 de abril de 2020

Lanzamiento de androidx.recyclerview:recyclerview:1.2.0-alpha03. La versión 1.2.0-alpha03 contiene estas confirmaciones.

Nuevas funciones

  • RecyclerView ahora tiene un método nestedScrollBy que permite el desplazamiento programático que colabora con el desplazamiento anidado. (Ibaa58)

Versión 1.2.0-alpha02

1 de abril de 2020

Lanzamiento de androidx.recyclerview:recyclerview:1.2.0-alpha02. La versión 1.2.0-alpha02 contiene estas confirmaciones.

Esta versión y las versiones posteriores de RecyclerView no son compatibles con versiones anteriores de ViewPager2. Si actualmente usas androidx.viewpager2:viewpager2:1.0.0 o versiones anteriores, asegúrate de actualizar a androidx.viewpager2:viewpager2:1.1.0-alpha01.

Nuevas funciones

  • MergeAdapter

    • MergeAdapter: es un adaptador de RecyclerView nuevo que puede combinar varios adaptadores de forma lineal.
    MyAdapter adapter1 = ...;
    AnotherAdapter adapter2 = ...;
    MergeAdapter merged = new MergeAdapter(adapter1, adapter2);
    recyclerView.setAdapter(mergedAdapter);
    

    En el ejemplo anterior, MergeAdapter presentará elementos de adapter1 seguidos de adapter2.

  • Restablecimiento del estado diferido RecyclerView.Adapter:

    • Se agregó una API nueva a la clase RecyclerView.Adapter que le permite al adaptador controlar cuándo se debe restablecer el estado de diseño.

    • Por ejemplo, puedes llamar a:

    myAdapter.setStateRestorationStrategy(StateRestorationStrategy.WHEN_NOT_EMPTY);
    

    para hacer que RecyclerView espere hasta que el adaptador no esté vacío antes de restablecer la posición de desplazamiento.

  • Ya no se propagarán de forma predeterminada CollectionInfo ni CollectionItemInfo.

    • Si quieres que los servicios de accesibilidad (por ejemplo, TalkBack) aún indiquen el recuento y el índice de elementos al usuario, deberás propagar CollectionInfo y CollectionItemInfo.

    • Estos objetos ya no se propagan en el framework porque este no puede determinar el recuento de elementos que percibe el usuario (como separadores, encabezados o elementos de RecyclerView que representan varios elementos percibidos).

Correcciones de errores

  • Ahora, RecyclerView evita el anclaje en las Vistas fuera del viewport cuando cambia el tamaño de este
  • Se corrigió un error en DiffUtil en el que se podía calcular mal la diferencia cuando un elemento original de la primera lista se duplicaba varias veces en la segunda lista. (b/123376278)

Versión 1.2.0-alpha01

18 de diciembre de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.2.0-alpha01. La versión 1.2.0-alpha01 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigieron problemas menores con FastScroller relacionados con la precisión táctil y del dibujo de derecha a izquierda. (b/143789932, aosp/1130438)
  • Se corrigió el bloqueo de ItemTouchHelper cuando se quitaba de RecyclerView mientras se ejecutaban las animaciones de ItemTouchHelper. (b/140447176, aosp/1167575)

Versión 1.1.0

Versión 1.1.0

20 de noviembre de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0. La versión 1.1.0 contiene estas confirmaciones.

Cambios importantes desde la versión 1.0.0

  • PagerSnapHelper y LinearSnapHelper ahora tienen en cuenta el relleno de RecyclerView independientemente del valor de clipToPadding. (b/139452422, b/139012032, aosp/1103182, aosp/1106715, aosp/1130728)
  • Se dio formalmente de baja RecyclerView.setLayoutTransition(LayoutTransition) y arrojará un valor IllegalArgumentException cuando se lo llame con un valor no nulo. En su lugar, usa RecyclerView.setItemAnimator(ItemAnimator). (aosp/839414)
  • aosp/723649: RecyclerView ahora implementa NestedScrollingChild3, lo que le permite saber cuándo todos los elementos superiores de desplazamiento anidado dejaron de consumir distancias de desplazamiento anidado. Si, por el momento, el código del desarrollador anula RecyclerView.onNestedScroll(View, int, int, int, int, int), es probable que ya no se los llame, por lo que se debería anular RecyclerView.onNestedScroll(View, int, int, int, int, int, int[]).
  • RecyclerView ahora tiene un atributo de estilo predeterminado, recyclerViewStyle, que permite configurar el estilo predeterminado de tu tema.
  • La API de acciones de accesibilidad de ViewCompat ya no corrompe RecyclerView ItemDelegate.
  • Se puede anular LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) para personalizar la cantidad de espacio de diseño adicional que se desea agregar al costado del RecyclerView asociado. (aosp/931259)
  • Se agregó una nueva sobrecarga de smoothScrollBy, RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration), que te permite especificar un valor en milisegundos para la duración de la animación. (aosp/952807)

Versión 1.1.0-rc01

23 de octubre de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0-rc01. La versión 1.1.0-rc01 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió un error de "Aplicación no responde" cuando se anulaba RecyclerViewAccessibilityDelegate.ItemDelegate. (aosp/1138057, aosp/1133434)

Versión 1.1.0-beta05

9 de octubre de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0-beta05. La versión 1.1.0-beta05 contiene estas confirmaciones.

Cambios en la API

  • Después de aosp/1106715 y aosp/1103182, ahora LinearSnapHelper y PagerSnapHelper mostrarán la vista que esté en el centro de los límites de RecyclerView, menos el relleno, a pesar del valor de clipToPadding. (aosp/1130728)

Correcciones de errores

  • Se solucionó un problema por el que RecyclerView generaba nodos de accesibilidad duplicados para sus elementos secundarios. (aosp/1130618)
  • Se solucionó un problema que provocaba que no funcionaran las jerarquías de accesibilidad virtual de RecyclerViews.
  • Se solucionó un problema por el que no se utilizaban elementos personalizados de ItemDelegates.

Versión 1.1.0-beta04

5 de septiembre de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0-beta04. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Correcciones de errores

  • PagerSnapHelper y LinearSnapHelper ahora tienen en cuenta el relleno de RecyclerView independientemente del valor de clipToPadding. (b/139452422, b/139012032, aosp/1103182, aosp/1106715)
  • Se corrigió un error en el que RecyclerView no rechazaba la interceptación táctil cuando el desplazamiento previo anidado hacía que se desplazara NestedScrollingParent. (b/138668210, aosp/1105373). Esto beneficia a bibliotecas como ViewPager2.
  • RecyclerView ahora va constantemente a SCROLL_STATE_DRAGGING antes de que se envíen los desplazamientos previos anidados. (aosp/1105373)
  • El desplazamiento previo anidado ya no se realiza antes de que el gesto exceda la inclinación táctil. (b/139530818, aosp/1105373)
  • Los argumentos dx y dy enviados a los pre-desplazamientos anidados se establecen en cero cuando RecyclerView no puede desplazarse en esa dirección. (aosp/1105373)

Versión 1.1.0-beta03

15 de agosto de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0-beta03. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Cambios en la API

  • RecyclerView ahora despacha distancias de desplazamiento a través de View.onScrollChanged(int l, int t, int oldl, int oldt), de modo que los servicios de accesibilidad sean notificados con precisión respecto de los cambios de desplazamiento. (aosp/1007823)

Correcciones de errores

  • Se corrigió un error importante de desbordamiento de pila de errores relacionado con RecyclerView y la accesibilidad. (aosp/1099577)

Versión 1.1.0-beta02

7 de agosto de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0-beta02. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • RecyclerView ahora tiene un atributo de estilo predeterminado, recyclerViewStyle, que permite configurar el estilo predeterminado de tu tema.

Correcciones de errores

  • Se corrigió un error por el que RecyclerView no impedía la intercepción táctil durante el desplazamiento, lo que hacía desplazar a NestedScrollingParent. (b/131115697, aosp/1055911)

Versión 1.1.0-beta01

2 julio de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0-beta01. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • RecyclerView ahora participa en el desplazamiento anidado cuando se inicia un desplazamiento mediante eventos de accesibilidad. (aosp/973584)

Versión 1.1.0-alpha06

5 de junio de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0-alpha06 y androidx.recyclerview:recyclerview-selection:1.1.0-alpha06. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Nuevas funciones

  • Se agregó una nueva sobrecarga de smoothScrollBy, RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration), que te permite especificar un valor en milisegundos para la duración de la animación. (aosp/952807)

Cambios en la API

  • GridLayoutManager y StaggeredGridLayoutManager ya no etiquetan automáticamente los elementos de intervalo completo como encabezados para fines de accesibilidad. (aosp/969703)
  • Se conserva el orden de selección (por tiempo de creación) en recyclerview-selection. (aosp/937279)

Correcciones de errores

  • Se corrigió un error por el que RecyclerView se desplazaba a velocidades incorrectas en una situación de desplazamiento anidado. (aosp/961642)
  • Se agregaron mejoras de estabilidad a recyclerview-selection. (aosp/960213, aosp/926296)

Versión 1.1.0-alpha05

7 de mayo de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0-alpha05 y androidx.recyclerview:recyclerview-selection:1.1.0-alpha05. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Nuevas funciones

  • Se puede anular LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) para personalizar la cantidad de espacio de diseño adicional que se desea agregar al costado del RecyclerView asociado. (aosp/931259)

Cambios en la API

  • Se agregó una API para recuperar el elemento de diseño DividerItemDecoration. (aosp/937282)
  • LinearLayout.getExtraLayoutSpace(RecyclerVew.State) dejó de estar disponible y se lo reemplazó por un nuevo mecanismo que permite tener espacio de diseño adicional personalizado en ambos lados. El nuevo método es LinearLayout.calculateExtraLayoutSpace(RecyclerView.state, int[]). (aosp/931259)

Correcciones de errores

  • Se eliminó la selección de gestos (aosp/940781).
  • Se conserva el orden de selección (por tiempo de creación). (b/128455535)

Versión 1.1.0-alpha04

3 de abril de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0-alpha04. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Correcciones de errores

  • RV OnItemTouchListener no podía interceptarse en ACTION_UP, lo que impedía que OnItemTouchListener's bloqueara la respuesta de otro código a ACTION_UP. Este problema fue solucionado (aosp/916137).

Versión 1.1.0-alpha03

13 de marzo de 2019

Lanzamiento de androidx.recyclerview:recyclerview:1.1.0-alpha03. Para obtener una lista completa de las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • GridLayoutManager: cálculo de la dimensión de la barra de desplazamiento de GridLayoutManager habilitable. (aosp/838836):
    • Utiliza información del intervalo para calcular las dimensiones de la barra de desplazamiento para un GridLayoutManager.
    • Si quieres habilitar la función, llama a GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) pasando un valor verdadero.
    • Consulta la documentación sobre GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) para obtener más información.

Correcciones de errores

  • Accesibilidad: Se producía un error por el que, una vez que se reciclaba ViewHolder y luego se recuperaba, el objeto ItemDelegate asociado con el RecyclerViewAccessibilityDelegate de RecyclerView no se asociaba con el elemento ViewView de ViewHolder, lo que interrumpía la accesibilidad. Se solucionó este problema. (aosp/916137)

Versión 1.1.0-alpha02

30 de enero de 2019

Lanzamiento de androidx.recyclerview:recyclerview 1.1.0-alpha02.

Cambios en la API

  • RecyclerView.setLayoutFrozen(boolean) y RecyclerView.isLayoutFrozen() dejaron de estar disponibles y se los reemplazó por RecyclerView.suppressLayout(boolean) y RecyclerView.isLayoutSuppressed(). (aosp/839414)
  • Se dio formalmente de baja RecyclerView.setLayoutTransition(LayoutTransition) y arrojará un valor IllegalArgumentException cuando se lo llame con un valor no nulo. (aosp/839414)

Correcciones de errores

  • Se corrigió un error en RV por el que nunca se detenía SmoothScroller. (aosp/843741)
  • Se corrigió un error por el que no era posible llamar a SCROLL_STATE_IDLE al final de una animación de desplazamiento. (aosp/812576)

Versión 1.1.0-alpha01

3 de diciembre de 2018

Lanzamiento de androidx.recyclerview 1.1.0-alpha01 y androidx.recyclerview-selection 1.1.0-alpha01.

androidx.recyclerview 1.1.0-alpha01

Cambios en la API

  • aosp/723649: RecyclerView ahora implementa NestedScrollingChild3, lo que le permite saber cuándo todos los elementos superiores de desplazamiento anidado dejaron de consumir distancias de desplazamiento anidado. Si, por el momento, el código del desarrollador anula RecyclerView.onNestedScroll(View, int, int, int, int, int), es probable que ya no se los llame, por lo que se debería anular RecyclerView.onNestedScroll(View, int, int, int, int, int, int[]).

Correcciones de errores

  • Se solucionó una falla que se producía cuando se usaba TransitionManager para contraer/expandir elementos en RecyclerView (b/37129527).
  • Se corrigió el error en el que el comportamiento de RecyclerView.OnItemTouchListener era inconsistente con el del sistema de visualización de onInterceptTouchEvent y onTouchEvent. (aosp/721235)
  • Se corrigieron algunos errores de casos límite relacionados con el desplazamiento suave. (aosp/729718, aosp/747168, aosp/812576)
  • Se corrigió la estrategia de ajuste en PagerSnapHelper para procesar vistas secundarias no típicas. (aosp/795752)

androidx.recyclerview-selection 1.1.0-alpha01

Correcciones de errores

  • Se corrigió el error ConcurrentModificationException que se arrojaba cuando se cambiaba el conjunto de datos al quitar la selección.

RecyclerView-Selection, versión 1.1.0

Recyclerview-Selection versión 1.1.0-rc01

5 de febrero de 2020

Lanzamiento de androidx.recyclerview:recyclerview-selection:1.1.0-rc01. La versión 1.1.0-rc01 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió un problema en el que RecyclerView es difícil de desplazar con una selección de gestos si interactúa con un AppBarLayout desplazable (aosp/1193934)

RecyclerView-Selection versión 1.1.0-beta01

4 de diciembre de 2019

Lanzamiento de androidx.recyclerview:recyclerview-selection:1.1.0-beta01. La versión 1.1.0-beta01 contiene estas confirmaciones.

Se implementaron mejoras generales en la estabilidad relacionadas con las verificaciones defensivas y la administración del estado interno.

Correcciones de errores

  • Se mejoró la administración del estado de la biblioteca y la interpretación de los eventos CANCEL, lo que generó mejoras en la estabilidad.

Cambios en la API

  • Se agregó el parámetro del tipo de clave de selección a las clases y los métodos donde faltaba.
  • Métodos dados de baja:
    • SelectionTracker.Builder#withPointerTooltype
    • SelectionTracker.Builder#withGestureTooltype
    • Estos métodos existían con el intent que los desarrolladores asignaban para el puntero o los comportamientos de gestos en función de tipos de herramienta distintos de los predeterminados*. El intent funcionaba, pero con el uso, fue evidente que las expectativas del usuario sobre el comportamiento de entrada se basan mucho en el tipo de herramienta. Además, las plumas stylus "pasivas" son tipos de herramientas FINGER en lo que respecta al sistema de entrada de Android.
    • Los tipos de herramienta predeterminados son FINGER para gestos y MOUSE para el puntero.