Personalizzare un elenco dinamico Parte di Android Jetpack.

Prova il metodo Scrivi
Jetpack Compose è il toolkit consigliato per la UI per Android. Scopri come utilizzare i layout in Compose.

Puoi personalizzare RecyclerView per soddisfare le tue esigenze specifiche. Le classi standard descritte in Crea elenchi dinamici con RecyclerView fornisce tutte le funzionalità necessarie alla maggior parte degli sviluppatori. Nella in molti casi, devi solo progettare la vista per ciascun rispettivo titolare e scrivere il per aggiornare queste viste con i dati appropriati. Tuttavia, se la tua app ha requisiti specifici, puoi modificare il comportamento standard in vari modi. Questo documento descrive alcune delle possibili personalizzazioni.

Modificare il layout

RecyclerView utilizza un gestore del layout per posizionare la persona elementi sullo schermo e per determinare quando riutilizzare le visualizzazioni degli articoli che non sono più visibile all'utente. Per riutilizzare, o riciclare, una vista o un layout potrebbe chiedere all'adattatore di sostituire i contenuti della vista con un elemento diverso dal set di dati. Riciclare le visualizzazioni in questo modo migliora il rendimento evitando la creazione di visualizzazioni o l'esecuzione di costoso findViewById() ricerche. Android Support Library include tre gestori di layout standard: ciascuna delle quali offre molte opzioni di personalizzazione:

  • LinearLayoutManager: dispone gli elementi in un elenco unidimensionale. L'utilizzo di un RecyclerView con LinearLayoutManager fornisce una funzionalità come ListView layout.
  • GridLayoutManager: dispone gli elementi in una griglia bidimensionale, come i quadrati su una a scacchiera. Utilizzo di RecyclerView con GridLayoutManager offre funzionalità quali GridView layout.
  • StaggeredGridLayoutManager: Disponi gli elementi in una griglia bidimensionale, con ogni colonna leggermente sfalsata da quello precedente, come le stelle sulla bandiera americana.

Se questi gestori del layout non soddisfano le tue esigenze, puoi crearne di personalizzati l'estensione RecyclerView.LayoutManager una classe astratta.

Aggiungi animazioni degli elementi

Ogni volta che un elemento viene modificato, RecyclerView usa un animatore per modificarne l'aspetto. Questo animatore è un oggetto che estende l'astratto RecyclerView.ItemAnimator . Per impostazione predefinita, l'RecyclerView utilizza DefaultItemAnimator per fornire l'animazione. Se vuoi fornire animazioni personalizzate, puoi definisci il tuo oggetto animatore estendendo RecyclerView.ItemAnimator.

Abilita selezione di voci dell'elenco

La recyclerview-selection La raccolta consente agli utenti di selezionare elementi in un elenco RecyclerView usando il tocco o input del mouse. Ciò ti consente di mantenere il controllo sulla presentazione visiva di un l'elemento selezionato. Puoi anche mantenere il controllo sui criteri che controllano la selezione il tuo comportamento, ad esempio quali elementi sono idonei per la selezione e quanti possono essere selezionati.

Per aggiungere il supporto per la selezione a un'istanza RecyclerView: questi passaggi:

  1. Determina quale tipo di chiave di selezione utilizzare, quindi crea un ItemKeyProvider

    Esistono tre tipi di chiavi che puoi utilizzare per identificare gli elementi selezionati:

    Per informazioni dettagliate sui tipi di chiavi di selezione, consulta SelectionTracker.Builder.

  2. Implementa ItemDetailsLookup.
  3. ItemDetailsLookup consente alla libreria selezionata di accedere informazioni su RecyclerView elementi a cui è stato assegnato un MotionEvent. È una fabbrica di ItemDetails di cui è stato eseguito il backup o da cui è estratta RecyclerView.ViewHolder in esecuzione in un'istanza Compute Engine.

  4. Aggiorna elemento View oggetti in RecyclerView per indicare se l'utente seleziona o e deselezionarli.

    La libreria di selezione non fornisce una decorazione visiva predefinita per elementi selezionati. Fornisci questa informazione al momento dell'implementazione onBindViewHolder(). Consigliamo il seguente approccio:

  5. Usa ActionMode per fornire all'utente gli strumenti necessari per eseguire un'azione sulla selezione.
  6. Registra un SelectionTracker.SelectionObserver per ricevere una notifica quando una selezione cambia. Quando una selezione viene creata, avvia ActionMode per presentare questo all'utente e fornire azioni specifiche per la selezione. Ad esempio, puoi aggiungere un pulsante Elimina alla ActionMode e collega la Freccia indietro sulla barra per cancellare la selezione. Quando la selezione diventa vuota, se l'utente cancella il l'ultima volta: termina la modalità di azione.

  7. Eseguire qualsiasi azione secondaria interpretata.
  8. Al termine della pipeline di elaborazione degli eventi, la libreria potrebbe determinare indica che l'utente sta tentando di attivare un elemento toccandolo, oppure tentativo di trascinare un elemento o una serie di elementi selezionati. Reagisci registrando l'ascoltatore appropriato. Per ulteriori informazioni le informazioni, vedi SelectionTracker.Builder.

  9. Monta tutto con SelectionTracker.Builder.
  10. L'esempio seguente mostra come assemblare questi elementi:

    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();
        

    Per creare un SelectionTracker ad esempio, la tua app deve fornire lo stesso RecyclerView.Adapter che utilizzi per inizializzare RecyclerView in SelectionTracker.Builder. Per questo motivo, dopo aver creato SelectionTracker, inseriscila nella RecyclerView.Adapter. In caso contrario, non puoi controllare la stato selezionato dal metodo onBindViewHolder().

  11. Includi la selezione nel attività del ciclo di vita.
  12. Per mantenere lo stato di selezione durante gli eventi del ciclo di vita delle attività, la tua app deve chiamare il metodo onSaveInstanceState() e onRestoreInstanceState() i metodi dell'attività onSaveInstanceState() e onRestoreInstanceState() rispettivamente. L'app deve inoltre fornire un ID selezione univoco alla costruttore SelectionTracker.Builder. Questo ID è obbligatorio perché un'attività o un frammento potrebbe avere più di un elenco distinto selezionabile, che devono essere mantenuti nello stato salvato.

Risorse aggiuntive

Per ulteriori informazioni, consulta i riferimenti riportati di seguito.