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 Creare elenchi dinamici con RecyclerView forniscono tutte le funzionalità di cui la maggior parte degli sviluppatori ha bisogno. 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 di articoli che non sono più visibile all'utente. Per riutilizzare o riciclare una vista, un gestore del layout potrebbe chiedere all'adattatore di sostituire i contenuti della vista con un elemento diverso del set di dati. Riciclare le visualizzazioni in questo modo migliora il rendimento evitando la creazione di visualizzazioni o l'esecuzione di costoso findViewById() ricerche. La libreria di supporto Android include tre gestori di layout standard, ciascuno dei quali offre molte opzioni di personalizzazione:

  • LinearLayoutManager: dispone gli elementi in un elenco unidimensionale. L'utilizzo di un RecyclerView con LinearLayoutManager offre funzionalità simili a un layout ListView.
  • GridLayoutManager: dispone gli elementi in una griglia bidimensionale, come i quadrati su una scacchiera. Utilizzo di RecyclerView con GridLayoutManager offre funzionalità quali GridView layout.
  • StaggeredGridLayoutManager: dispone gli elementi in una griglia bidimensionale, con ogni colonna leggermente offset rispetto alla precedente, come le stelle su una 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 cambia, RecyclerView utilizza un animatore per modificarne l'aspetto. Questo animatore è un oggetto che estende l'astratto RecyclerView.ItemAnimator . Per impostazione predefinita, RecyclerView utilizza DefaultItemAnimator per fornire l'animazione. Se vuoi fornire animazioni personalizzate, puoi definire il tuo oggetto animator estendendo RecyclerView.ItemAnimator.

Attivare la selezione degli elementi dell'elenco

La biblioteca recyclerview-selection consente agli utenti di selezionare gli elementi di un elenco RecyclerView utilizzando il tocco o l'input del mouse. Ciò ti consente di mantenere il controllo sulla presentazione visiva di un l'elemento selezionato. Puoi anche mantenere il controllo sulle norme che regolano il comportamento di selezione, ad esempio quali elementi sono idonei per la selezione e quanti elementi possono essere selezionati.

Per aggiungere il supporto della selezione a un'istanza RecyclerView:

  1. Determina il tipo di chiave di selezione da 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. Si tratta in pratica di una fabbrica per le istanze ItemDetails di cui viene eseguito il backup o che vengono estratte da un'istanza RecyclerView.ViewHolder.

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

    La raccolta di selezione non fornisce una decorazione visiva predefinita per gli elementi selezionati. Fornisci questo valore quando implementi onBindViewHolder(). Ti consigliamo di procedere nel seguente modo:

    • Tra onBindViewHolder(), chiama setActivated()non setSelected()—on l'oggetto View con true o false, a seconda che l'articolo è selezionata.
    • Aggiorna lo stile della vista per rappresentare lo stato attivato. Me è consigliabile utilizzare stato del colore elenco di risorse per configurare lo stile.
  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 viene creata una selezione per la prima volta, inizia ActionMode a presentarla all'utente e fornisci 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 la cancella 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 che l'utente sta tentando di attivare un elemento toccandolo, oppure tentativo di trascinare un elemento o una serie di elementi selezionati. Reagire a queste interpretazioni registrando l'ascoltatore appropriato. Per maggiori informazioni le informazioni, vedi SelectionTracker.Builder.

  9. Monta tutto con SelectionTracker.Builder.
  10. L'esempio seguente mostra come combinare 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'istanza di SelectionTracker, la tua app deve fornire lo stesso RecyclerView.Adapter utilizzato per inizializzare RecyclerView a SelectionTracker.Builder. Per questo motivo, dopo aver creato SelectionTracker, inseriscila nella RecyclerView.Adapter. In caso contrario, non puoi controllare lo stato selezionato di un elemento dal metodo onBindViewHolder().

  11. Includi la selezione negli eventi del ciclo di vita dell'attività.
  12. Per conservare lo stato di selezione negli eventi del ciclo di vita dell'attività, la tua app deve chiamare i metodi onSaveInstanceState() e onRestoreInstanceState() del tracker di selezione rispettivamente dai metodi onSaveInstanceState() e onRestoreInstanceState() dell'attività. L'app deve anche fornire un ID selezione univoco al 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 seguenti riferimenti.