Personalizzare un elenco dinamico Parte di Android Jetpack.
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 unRecyclerView
conLinearLayoutManager
fornisce una funzionalità comeListView
layout.GridLayoutManager
: dispone gli elementi in una griglia bidimensionale, come i quadrati su una a scacchiera. Utilizzo diRecyclerView
conGridLayoutManager
offre funzionalità qualiGridView
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:
- 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:
Parcelable
e le relative sottoclassi, comeUri
String
Long
Per informazioni dettagliate sui tipi di chiavi di selezione, consulta
SelectionTracker.Builder
. - Implementa
ItemDetailsLookup
. - Aggiorna elemento
View
oggetti inRecyclerView
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:- Tra
onBindViewHolder()
, chiamasetActivated()
—nonsetSelected()
—on l'oggettoView
contrue
ofalse
, a seconda che l'articolo è selezionata. - Aggiorna lo stile della vista per rappresentare lo stato attivato. Me consigliamo di utilizzare stato del colore elenco di risorse per configurare lo stile.
- Tra
- Usa
ActionMode
per fornire all'utente gli strumenti necessari per eseguire un'azione sulla selezione. - Eseguire qualsiasi azione secondaria interpretata.
- Monta tutto con
SelectionTracker.Builder
. - Includi la selezione nel attività del ciclo di vita.
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.
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.
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
.
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()
.
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.
- Girasole
app demo, che utilizza
RecyclerView
. - Utilizza RecyclerView per mostrare un codelab in un elenco scorrevole.
- Android Codelab su Kotlin Fundamentals: concetti fondamentali di RecyclerView.