Cómo personalizar una lista dinámica Parte de Android Jetpack.
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 unRecyclerView
conLinearLayoutManager
proporciona una funcionalidad como unListView
.GridLayoutManager
: organiza los elementos en una cuadrícula bidimensional, como los cuadrados de una tablero de ajedrez. Usa un objetoRecyclerView
conGridLayoutManager
ofrece funciones como unaGridView
.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:
- 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:
Parcelable
y sus subclases, comoUri
String
Long
Para obtener información detallada sobre los tipos de claves de selección, consulta
SelectionTracker.Builder
- Implementación
ItemDetailsLookup
- Actualizar elemento
View
objeto en elRecyclerView
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()
, llamasetActivated()
, nosetSelected()
: activado el objetoView
contrue
ofalse
, 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.
- En
- Usa
ActionMode
para proporcionar al usuario las herramientas para realizar una acción en la selección. - Realizar acciones secundarias interpretadas
- Reúne todo con
SelectionTracker.Builder
. - Incluye la selección en la actividad ciclo de vida.
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.
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.
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
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()
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.
- Girasol
app de demostración, que usa
RecyclerView
. - Uso RecyclerView para mostrar una lista desplazable.
- En Android Aspectos básicos de Kotlin: aspectos básicos de RecyclerView