Dynamische Liste anpassen Teil von Android Jetpack
Sie können anpassen
RecyclerView
um Ihre spezifischen Anforderungen zu erfüllen. Die in diesem Dokument beschriebenen Standardklassen
Dynamische Listen erstellen mit
RecyclerView bietet alle Funktionen, die die meisten Entwickler benötigen. In
In vielen Fällen müssen Sie nur die Ansicht für jeden Ansichtshalter entwerfen und die
um diese Ansichten mit den entsprechenden Daten zu aktualisieren. Wenn Ihre App jedoch
spezifischen Anforderungen zu erfüllen, können Sie das Standardverhalten auf verschiedene Arten ändern.
In diesem Dokument werden einige der möglichen Anpassungen beschrieben.
Layout ändern
RecyclerView
verwendet einen Layout-Manager, um die Position der
Elemente auf dem Bildschirm zu sehen und zu ermitteln, wann Artikelansichten wiederverwendet werden können, die nicht mehr
für den Nutzer sichtbar sind. Um eine Ansicht, ein Layout wiederzuverwenden oder zu recyceln,
fordert der Manager den Adapter möglicherweise an, den Inhalt der Ansicht durch einen
anderen Element aus dem Dataset. So wird das Recycling von Ansichten verbessert
indem Sie unnötige Aufrufe vermeiden oder
teuer
findViewById()
Suchvorgängen. Die Android Support Library umfasst drei Standard-Layoutmanager:
das viele Anpassungsoptionen bietet:
LinearLayoutManager
: Ordnet die Elemente in einer eindimensionalen Liste an. Mit einemRecyclerView
mitLinearLayoutManager
bietet Funktionen wie eineListView
Layout.GridLayoutManager
: die Elemente in einem zweidimensionalen Raster anordnen, wie die Quadrate auf einem Schachbrett.RecyclerView
mitGridLayoutManager
bietet Funktionen wieGridView
Layout.StaggeredGridLayoutManager
: Ordnet die Elemente in einem zweidimensionalen Raster an, wobei jede Spalte leicht versetzt ist wie die Sterne auf einer amerikanischen Flagge.
Wenn diese Layout-Manager nicht Ihren Anforderungen entsprechen, können Sie Ihre eigenen erstellen, indem Sie
das Erweitern der
RecyclerView.LayoutManager
abstrakte Klasse.
Elementanimationen hinzufügen
Immer wenn sich ein Element ändert, verwendet RecyclerView
einen Animator
um die Darstellung zu ändern. Dieser Animator ist ein Objekt, das die abstrakte
RecyclerView.ItemAnimator
. Standardmäßig verwendet der RecyclerView
DefaultItemAnimator
für die Animation. Wenn Sie benutzerdefinierte Animationen bereitstellen möchten, können Sie
können Sie Ihr eigenes Animationsobjekt definieren, indem Sie
RecyclerView.ItemAnimator
Auswahl von Listenelementen aktivieren
Die
recyclerview-selection
können Nutzer Elemente in einer RecyclerView
-Liste per Berührung auswählen.
oder Mauseingabe. So behalten Sie die Kontrolle über die visuelle Darstellung eines
ausgewähltes Element. Sie können auch die Kontrolle über Richtlinien behalten, die die Auswahl steuern
welche Elemente ausgewählt werden können und wie viele Elemente
ausgewählt werden.
Wenn Sie einer RecyclerView
-Instanz die Unterstützung für die Auswahl hinzufügen möchten, folgen Sie
diese Schritte:
- Bestimmen Sie, welchen Auswahlschlüsseltyp Sie verwenden möchten, und erstellen Sie dann einen
ItemKeyProvider
Es gibt drei Schlüsseltypen, mit denen Sie ausgewählte Elemente identifizieren können:
Parcelable
und ihre abgeleiteten Klassen,Uri
String
Long
Detaillierte Informationen zu Auswahlschlüsseltypen finden Sie unter
SelectionTracker.Builder
- Implementieren
ItemDetailsLookup
- Artikel aktualisieren
View
Objekte in denRecyclerView
, um anzugeben, ob der Nutzer hebt die Auswahl auf.Die Auswahlbibliothek bietet keine standardmäßige visuelle Gestaltung ausgewählten Elementen. Geben Sie diese an, wenn Sie
onBindViewHolder()
Wir empfehlen den folgenden Ansatz:- Rufen Sie in
onBindViewHolder()
setActivated()
— nichtsetSelected()
– amView
-Objekt mittrue
oderfalse
, je nachdem, ob der Artikel ausgewählt ist. - Aktualisieren Sie den Stil der Ansicht so, dass er den aktivierten Status darstellt. Mi. empfehlen wir, ein Farbstatus list resource, um den Stil zu konfigurieren.
- Rufen Sie in
ActionMode
verwenden , um Nutzenden Tools an die Hand zu geben, mit denen sie eine Aktion für die Auswahl ausführen können.- Führt interpretierte sekundäre Aktionen aus.
- Mit
SelectionTracker.Builder
kannst du alles zusammenstellen. - Auswahl in die Aktivität Lifecycle-Events.
ItemDetailsLookup
ermöglicht der Auswahlbibliothek Zugriff
Informationen über RecyclerView
Elemente mit einer
MotionEvent
Es ist praktisch eine Fabrik für
ItemDetails
Instanzen, die gesichert oder aus einem
RecyclerView.ViewHolder
Instanz.
Registrieren Sie ein
SelectionTracker.SelectionObserver
, um benachrichtigt zu werden, wenn sich eine Auswahl ändert. Wenn Sie eine Auswahl erstellen,
ActionMode
starten, um dies dem Nutzer zu präsentieren und
auswahlspezifischen Aktionen. Sie können beispielsweise eine Löschschaltfläche zur
ActionMode
-Balken und verbinde sie mit dem Zurück-Pfeil auf der Leiste, um die Auswahl zu löschen
ausgewählt haben. Wenn die Auswahl leer wird, der Nutzer die
beim letzten Mal ausgewählt – Aktionsmodus beenden.
Am Ende der Pipeline für die Ereignisverarbeitung ermittelt die Bibliothek möglicherweise,
dass der Nutzer versucht, ein Element zu aktivieren, indem er darauf tippt, oder
versuchen, ein Element oder eine Gruppe ausgewählter Elemente zu ziehen. Auf diese reagieren
Interpretationen durch Registrierung des entsprechenden Listeners. Weitere Informationen
finden Sie unter
SelectionTracker.Builder
Das folgende Beispiel zeigt, wie diese Teile zusammengesetzt werden:
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();
Um eine
SelectionTracker
muss Ihre Anwendung dieselben
RecyclerView.Adapter
mit dem Sie RecyclerView
initialisieren,
SelectionTracker.Builder
. Daher sollten Sie, nachdem Sie den
SelectionTracker
-Instanz einfügen,
RecyclerView.Adapter
. Andernfalls können Sie die
den ausgewählten Status der Methode onBindViewHolder()
.
Damit der Auswahlstatus über alle Lebenszyklusereignisse der Aktivität hinweg beibehalten wird,
muss die Methode
onSaveInstanceState()
und
onRestoreInstanceState()
aus der Aktivität
onSaveInstanceState()
und
onRestoreInstanceState()
. Ihre App muss außerdem eine eindeutige Auswahl-ID für den
SelectionTracker.Builder
-Konstruktor. Diese ID ist erforderlich, weil
kann eine Aktivität oder ein Fragment
mehr als eine unterschiedliche, auswählbare Liste,
die alle in ihrem gespeicherten Zustand beibehalten werden müssen.
Weitere Informationen
Weitere Informationen finden Sie in den folgenden Referenzen.
- Sonnenblume
Demo-App, die
RecyclerView
verwendet. - Verwenden Sie RecyclerView zum Anzeigen einer scrollbaren Liste.
- Android Codelab zu Kotlin-Grundlagen: RecyclerView-Grundlagen.