Personnaliser une liste dynamique Inclus dans Android Jetpack.

Essayer Compose
Jetpack Compose est le kit d'outils d'interface utilisateur recommandé pour Android. Découvrez comment utiliser les mises en page dans Compose.
<ph type="x-smartling-placeholder"></ph> Listes et grilles différées →

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 un RecyclerView avec LinearLayoutManager fournit une fonctionnalité comme ListView mise en page.
  • GridLayoutManager: Dispose les éléments dans une grille à deux dimensions, comme les carrés d'une damier. Utiliser un RecyclerView avec GridLayoutManager fournit des fonctionnalités telles qu'un GridView 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:

  1. 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:

    Pour en savoir plus sur les types de clés de sélection, consultez SelectionTracker.Builder

  2. Implémentation ItemDetailsLookup
  3. 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.

  4. Mettre à jour l'élément View objets dans RecyclerView 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(), appelez setActivated() : pas setSelected() – activé l'objet View avec true ou false, 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.
  5. Utiliser ActionMode pour fournir à l'utilisateur les outils pour effectuer une action sur la sélection.
  6. 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.

  7. Effectuez toute action secondaire interprétée.
  8. À 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

  9. Assemblez tous les éléments avec SelectionTracker.Builder.
  10. 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().

  11. Inclure la sélection dans activité du cycle de vie.
  12. 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.