Cómo personalizar una lista dinámica Parte de Android Jetpack.

Prueba el método de Compose
Jetpack Compose es el kit de herramientas de IU recomendado para Android. Obtén información para trabajar con diseños en Compose.

Puedes personalizar RecyclerView objetos para satisfacer tus necesidades específicas. Las clases estándar descritas en Crea listas dinámicas con RecyclerView que brinda todas las funciones que necesita la mayoría de los desarrolladores. En En muchos casos, solo necesitas diseñar la vista para cada contenedor de vistas y escribir el para actualizar esas vistas con los datos adecuados. Sin embargo, si tu app tiene para los requisitos específicos, puedes modificar el comportamiento estándar de varias formas. En este documento, se describen algunas de las posibles personalizaciones.

Cómo modificar el diseño

RecyclerView usa un administrador de diseño para posicionar la imagen individual. elementos en la pantalla y para determinar cuándo reutilizar las vistas de elementos que ya no están visibles para el usuario. Para reutilizar (o reciclar) una vista o un diseño administrador podría pedirle al adaptador que reemplace el contenido de la vista con una elemento diferente del conjunto de datos. Las vistas de reciclaje de esta manera rendimiento, evitando la creación de vistas innecesarias o costoso findViewById() búsquedas. La biblioteca de compatibilidad de Android incluye tres administradores de diseño estándar: cada uno de los cuales ofrece muchas opciones de personalización:

  • LinearLayoutManager: organiza los elementos en una lista unidimensional. Con un RecyclerView con LinearLayoutManager proporciona una funcionalidad como un ListView .
  • GridLayoutManager: organiza los elementos en una cuadrícula bidimensional, como los cuadrados de una tablero de ajedrez. Usa un objeto RecyclerView con GridLayoutManager ofrece funciones como una GridView .
  • StaggeredGridLayoutManager: organiza los elementos en una cuadrícula bidimensional, en la que cada columna está ligeramente desplazada como las estrellas en la bandera estadounidense.

Si estos administradores de diseño no satisfacen tus necesidades, puedes crear los tuyos extendiendo el RecyclerView.LayoutManager clase abstracta.

Cómo agregar animaciones de elementos

Cada vez que cambia un elemento, RecyclerView usa un animador. para cambiar su apariencia. Este animador es un objeto que extiende la imagen RecyclerView.ItemAnimator . De forma predeterminada, RecyclerView usa DefaultItemAnimator para proporcionar la animación. Si quieres proporcionar animaciones personalizadas, puedes definir tu propio objeto animador extendiendo RecyclerView.ItemAnimator

Cómo habilitar la selección de elementos de listas

El recyclerview-selection La biblioteca permite a los usuarios seleccionar elementos de una lista de RecyclerView con toques o una entrada del mouse. Esto te permite mantener el control sobre la presentación visual de una el elemento seleccionado. También puedes mantener el control sobre las políticas que controlan la selección como qué elementos son aptos para seleccionarse y cuántos seleccionarse.

Para agregar compatibilidad de selección a una instancia de RecyclerView, sigue estos pasos:

  1. Determina qué tipo de clave de selección usar y, luego, crea una ItemKeyProvider

    Existen tres tipos clave que puedes usar para identificar elementos seleccionados:

    Para obtener información detallada sobre los tipos de claves de selección, consulta SelectionTracker.Builder

  2. Implementación ItemDetailsLookup
  3. ItemDetailsLookup permite que la biblioteca de selección acceda a información sobre RecyclerView elementos en función de un MotionEvent Efectivamente, es una fábrica para ItemDetails instancias de las que se realiza una copia de seguridad de un RecyclerView.ViewHolder instancia.

  4. Actualizar elemento View objeto en el RecyclerView para reflejar si el usuario selecciona anula la selección.

    La biblioteca de selección no proporciona una decoración visual predeterminada de la elementos seleccionados. Proporciona esto cuando implementes onBindViewHolder() Recomendamos el siguiente enfoque:

    • En onBindViewHolder(), llama setActivated(), no setSelected(): activado el objeto View con true o false, según si el elemento .
    • Actualiza el estilo de la vista para representar el estado activado. Mié recomendar el uso de un estado de color list resource para configurar el diseño.
  5. Usa ActionMode para proporcionar al usuario las herramientas para realizar una acción en la selección.
  6. Registrar un SelectionTracker.SelectionObserver para recibir una notificación cuando una selección cambia. Cuando se crea una selección por primera vez, inicia ActionMode para presentar esto al usuario y proporcionar acciones específicas de la selección. Por ejemplo, puedes agregar un botón de eliminación al la barra ActionMode y conecta la flecha hacia atrás de la barra para borrar la selección. Cuando la selección se vacía, si el usuario borra la última vez: finaliza el modo de acción.

  7. Realizar acciones secundarias interpretadas
  8. Al final de la canalización del procesamiento de eventos, la biblioteca podría determinar que el usuario intenta activar un elemento al presionarlo o está cuando intentan arrastrar un elemento o conjunto de elementos seleccionados. Registra el objeto de escucha correspondiente como reacción a estas interpretaciones. Para ver más información, consulta SelectionTracker.Builder

  9. Reúne todo con SelectionTracker.Builder.
  10. En el siguiente ejemplo, se muestra cómo reunir todo esto:

    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 crear un SelectionTracker tu aplicación debe proporcionar la misma RecyclerView.Adapter que usas para inicializar RecyclerView SelectionTracker.Builder Por este motivo, después de crear el SelectionTracker, insértala en la RecyclerView.Adapter De lo contrario, no podrás verificar el estado el estado seleccionado del método onBindViewHolder()

  11. Incluye la selección en la actividad ciclo de vida.
  12. Para preservar el estado de selección en los eventos de ciclo de vida de la actividad, tu app debe llamar al estado de la herramienta onSaveInstanceState() y onRestoreInstanceState() métodos de la clase de directorio onSaveInstanceState() y onRestoreInstanceState() de forma manual, respectivamente. Tu app también debe proporcionar un ID de selección único al El constructor SelectionTracker.Builder. Este ID es obligatorio porque una actividad o un fragmento puede tener más de una lista distinta y seleccionable, y todos deben conservarse en su estado guardado.

Recursos adicionales

Consulta las siguientes referencias para obtener más información.