Personnaliser une liste dynamique Inclus dans Android Jetpack.
Vous pouvez personnaliser
RecyclerView
pour répondre à vos besoins spécifiques. Les classes standards décrites dans l'article
Créez des listes dynamiques avec
RecyclerView fournissent toutes les fonctionnalités dont la plupart des développeurs ont besoin. Dans
Dans de nombreux cas, il vous suffit de concevoir la vue pour chaque conteneur de vue et d'écrire la
pour mettre à jour ces vues avec les données appropriées. Toutefois, si votre application comporte
à des exigences spécifiques, vous pouvez modifier le comportement standard de plusieurs façons.
Ce document décrit quelques-unes des personnalisations possibles.
Modifier la mise en page
RecyclerView
utilise un gestionnaire de mise en page pour positionner l'élément
des éléments à l'écran et pour déterminer quand réutiliser des vues d'élément qui ne sont plus
visible par l'utilisateur. Pour réutiliser (ou recycler) une vue ou une mise en page
gestionnaire peut demander à l'adaptateur de remplacer le contenu de l'affichage par un
un autre élément
de l'ensemble de données. Recycler les vues de cette façon permet d'améliorer
des performances en évitant de créer des vues inutiles
cher
findViewById()
de recherche. La bibliothèque Android Support
comprend trois gestionnaires de mise en page standards :
qui offre de nombreuses options de personnalisation:
LinearLayoutManager
: organise les éléments dans une liste unidimensionnelle. Avec unRecyclerView
avecLinearLayoutManager
fournit une fonctionnalité commeListView
mise en page.GridLayoutManager
: Dispose les éléments dans une grille à deux dimensions, comme les carrés d'une damier. Utiliser unRecyclerView
avecGridLayoutManager
fournit des fonctionnalités telles qu'unGridView
mise en page.StaggeredGridLayoutManager
: Dispose les éléments dans une grille à deux dimensions, chaque colonne étant légèrement décalée comme les étoiles sur le drapeau des États-Unis.
Si ces gestionnaires de mise en page ne répondent pas à vos besoins, vous pouvez créer les vôtres en
étendant
RecyclerView.LayoutManager
une classe abstraite.
Ajouter des animations aux éléments
Chaque fois qu'un élément change, RecyclerView
utilise un animateur.
pour modifier son apparence. Il s'agit d'un objet qui étend l'animation abstraite
RecyclerView.ItemAnimator
. Par défaut, RecyclerView
utilise
DefaultItemAnimator
pour fournir l'animation. Si vous souhaitez fournir des animations personnalisées, vous pouvez
définissez votre propre objet d'animation
RecyclerView.ItemAnimator
Activer la sélection des éléments de liste
La
recyclerview-selection
La bibliothèque permet aux utilisateurs de sélectionner des éléments d'une liste RecyclerView
en appuyant sur l'écran
ou la saisie à la souris. Vous gardez ainsi le contrôle sur la présentation visuelle d'une
l'élément sélectionné. Vous pouvez également garder le contrôle sur les règles contrôlant la sélection.
comme les articles éligibles à la sélection et le nombre
doit être sélectionnée.
Pour ajouter la prise en charge de la sélection à une instance RecyclerView
, suivez
procédez comme suit:
- Déterminez le type de clé de sélection à utiliser, puis créez une
ItemKeyProvider
Il existe trois types de clés pour identifier les éléments sélectionnés:
Parcelable
et ses sous-classes, commeUri
String
Long
Pour en savoir plus sur les types de clés de sélection, consultez
SelectionTracker.Builder
- Implémentation
ItemDetailsLookup
- Mettre à jour l'élément
View
objets dansRecyclerView
pour indiquer si l'utilisateur sélectionne ou les désélectionne.La bibliothèque de sélection ne fournit pas de décoration visuelle par défaut pour le éléments sélectionnés. Fournissez ces informations lorsque vous implémentez
onBindViewHolder()
Nous recommandons l'approche suivante:- Dans
onBindViewHolder()
, appelezsetActivated()
: passetSelected()
– activé l'objetView
avectrue
oufalse
, selon que l'élément est sélectionnée. - Modifiez le style de la vue pour représenter l'état d'activation. Mer nous vous recommandons d'utiliser état des couleurs liste de ressources pour configurer le style.
- Dans
- Utiliser
ActionMode
pour fournir à l'utilisateur les outils pour effectuer une action sur la sélection. - Effectuez toute action secondaire interprétée.
- Assemblez tous les éléments avec
SelectionTracker.Builder
. - Inclure la sélection dans activité du cycle de vie.
ItemDetailsLookup
permet à la bibliothèque de sélections d'accéder
informations sur RecyclerView
éléments en fonction d'une
MotionEvent
C'est en fait une usine pour
ItemDetails
d'instances sauvegardées ou extraites d'une
RecyclerView.ViewHolder
Compute Engine.
Enregistrer un
SelectionTracker.SelectionObserver
pour recevoir une notification
lorsqu'une sélection est modifiée. Lorsqu'une sélection est créée,
démarrer ActionMode
pour le présenter à l'utilisateur et fournir
spécifiques à la sélection. Par exemple, vous pouvez ajouter un bouton de suppression
ActionMode
barre et connecter la flèche de retour sur la barre pour effacer
de la sélection. Lorsque la sélection devient vide, si l'utilisateur efface le
sélection la dernière fois :
terminez le mode d'action.
À la fin du pipeline de traitement des événements, la bibliothèque peut déterminer
que l'utilisateur tente d'activer un élément, qu'il appuie dessus
de faire glisser un élément
ou un ensemble d'éléments sélectionnés. Réagir
les interprétations en enregistrant l'écouteur approprié. Pour plus
pour en savoir plus, consultez
SelectionTracker.Builder
L'exemple suivant montre comment assembler ces pièces:
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();
Pour créer un
SelectionTracker
votre application doit fournir le même identifiant
RecyclerView.Adapter
que vous utilisez pour initialiser RecyclerView
sur
SelectionTracker.Builder
C'est pourquoi, une fois la classe
SelectionTracker
, injectez-la dans votre
RecyclerView.Adapter
Sinon, vous ne pourrez pas vérifier
l'état sélectionné à partir de la méthode onBindViewHolder()
.
Pour conserver l'état de sélection dans les événements de cycle de vie d'une activité, votre application
doit appeler la fonction
onSaveInstanceState()
et
onRestoreInstanceState()
à partir de l'API
onSaveInstanceState()
et
onRestoreInstanceState()
. Votre application doit également fournir un ID de sélection unique au paramètre
Constructeur SelectionTracker.Builder
. Cet ID est obligatoire, car
une activité ou un fragment peuvent comporter plusieurs listes distinctes sélectionnables
qui doivent tous être conservés
dans leur état enregistré.
Ressources supplémentaires
Pour en savoir plus, consultez les références suivantes.
- Tournesol
application de démonstration, qui utilise
RecyclerView
. - Utilisation RecyclerView pour afficher une liste déroulante.
- Sur Android Atelier de programmation sur les principes de base de Kotlin: Principes de base de RecyclerView.