Dostosowywanie listy dynamicznej Zawiera Android Jetpack.
Możesz dostosować
RecyclerView
zaspokajać konkretne potrzeby. Klasy standardowe opisane w
Twórz dynamiczne listy z użyciem funkcji
RecyclerView zapewnia wszystkie funkcje, których większość deweloperów potrzebuje. W
w wielu przypadkach wystarczy tylko zaprojektować widok dla każdego uchwytu i napisać
za pomocą którego uzupełnia on te widoki odpowiednimi danymi. Jeśli jednak aplikacja ma
określonych wymagań, możesz modyfikować standardowe działanie na wiele sposobów.
W tym dokumencie opisujemy niektóre możliwe dostosowania.
Modyfikowanie układu
RecyclerView
używa menedżera układu do określania pozycji danej osoby
elementów na ekranie i pozwala określić, kiedy ponownie wykorzystać widoki elementów, które nie są już
widoczne dla użytkownika. Aby ponownie wykorzystać lub ponownie wykorzystać widok, układ
może poprosić adapter o zastąpienie zawartości widoku
inny element ze zbioru danych. Ten sposób recyklingu poprawia jakość zdjęć
poprzez unikanie tworzenia zbędnych wyświetleń lub
wysokie ceny
findViewById()
wyszukiwania. Biblioteka pomocy Androida zawiera trzech menedżerów układu standardowego.
Każdy z nich ma wiele opcji dostosowywania:
LinearLayoutManager
: uporządkuje elementy na jednowymiarowej liście. Za pomocąRecyclerView
w:LinearLayoutManager
zapewnia takich jakListView
układ.GridLayoutManager
: rozmieszcza elementy w dwuwymiarowej siatce, tak jak kwadraty na szachownicę. Korzystanie zRecyclerView
zGridLayoutManager
udostępnia takie funkcje jakGridView
układ.StaggeredGridLayoutManager
: rozmieszcza elementy w dwuwymiarowej siatce, a każda kolumna jest lekko przesunięta niż poprzednie, jak gwiazdy na amerykańskiej flagie.
Jeśli te menedżery układu nie odpowiadają Twoim potrzebom, możesz utworzyć własne,
przedłużając
RecyclerView.LayoutManager
klasa abstrakcyjna.
Dodaj animacje elementów
Za każdym razem, gdy element się zmienia, RecyclerView
korzysta z animatora.
aby zmienić jego wygląd. Animator jest obiektem, który rozszerza abstrakcję
RecyclerView.ItemAnimator
zajęcia. Domyślnie RecyclerView
używa
DefaultItemAnimator
by utworzyć animację. Jeśli chcesz dodać animacje niestandardowe,
zdefiniować własny obiekt animatora, rozszerzając
RecyclerView.ItemAnimator
Włącz wybieranie elementów z listy
recyclerview-selection
biblioteka pozwala użytkownikom wybierać elementy z listy RecyclerView
dotykiem
ani przy użyciu myszy. Zapewnia to kontrolę nad wizualną prezentacją
wybrany element. Zachowasz też kontrolę nad zasadami kontrolującymi wybór.
zachowanie, np. które elementy można wybrać
i ile z nich
wyboru.
Aby dodać obsługę wyboru do instancji RecyclerView
, postępuj zgodnie z instrukcjami
wykonaj te czynności:
- Określ typ klucza wyboru, którego chcesz użyć, a następnie utwórz
ItemKeyProvider
Istnieją 3 typy kluczowych, których można użyć do identyfikacji wybranych elementów:
Parcelable
i jego podklas, takich jakUri
String
Long
Szczegółowe informacje o typach kluczy wyboru znajdziesz w sekcji
SelectionTracker.Builder
- Wdrażaj
ItemDetailsLookup
- Zaktualizuj element
View
obiektów wRecyclerView
, aby wskazać, czy użytkownik wybiera odznaczy je.Biblioteka wyboru nie zapewnia domyślnej ozdoby wizualnej dla wybrane elementy. Podaj go podczas implementacji
onBindViewHolder()
Zalecamy następujące podejście:- W aplikacji
onBindViewHolder()
zadzwońsetActivated()
– niesetSelected()
– wł. obiektView
ztrue
lubfalse
w zależności od tego, czy zaznaczono. - Zaktualizuj styl widoku, tak aby odzwierciedlał stan aktywacji. Śr zalecamy użycie stan koloru wyświetlić listę zasobów, aby skonfigurować styl.
- W aplikacji
- Użyj formatu:
ActionMode
by zapewnić użytkownikowi narzędzia do wykonania wybranej czynności. - Wykonanie wszelkich zinterpretowanych działań dodatkowych.
- Zmontuj wszystko za pomocą narzędzia
SelectionTracker.Builder
. - Uwzględnij zaznaczenie w aktywność cyklu życia.
Aplikacja ItemDetailsLookup
zezwala na dostęp do biblioteki wyboru
informacje o RecyclerView
elementach dla
MotionEvent
W praktyce jest to fabryka
ItemDetails
z instancji utworzonych w kopii zapasowej lub wyodrębnionych z instancji
RecyclerView.ViewHolder
instancji.
Zarejestruj
SelectionTracker.SelectionObserver
powiadomienia o zmianie wyboru. Podczas tworzenia wyboru
uruchom polecenie ActionMode
, aby zaprezentować to użytkownikowi i dostarczyć
czynności związane z wyborem. Możesz na przykład dodać przycisk usuwania do
Pasek ActionMode
i połącz strzałkę wstecz, aby ją wyczyścić
zaznaczania. Gdy zaznaczenie stanie się puste – jeśli użytkownik wyczyści pole
ostatnim razem – zakończ tryb działania.
Na końcu potoku przetwarzania zdarzeń biblioteka może określić
użytkownik próbuje aktywować element, klikając go;
próba przeciągania elementu lub zestawu wybranych elementów. Reaguj na te
przez zarejestrowanie odpowiedniego detektora. Więcej
Więcej informacji zawiera
SelectionTracker.Builder
Z przykładu poniżej dowiesz się, jak połączyć te elementy:
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();
Aby utworzyć
SelectionTracker
instancji, aplikacja musi dostarczać to samo
RecyclerView.Adapter
używanego do inicjowania RecyclerView
SelectionTracker.Builder
Z tego powodu po utworzeniu
instancji SelectionTracker
, wstrzyknij ją do
RecyclerView.Adapter
W przeciwnym razie nie możesz sprawdzić
wybrano stan z metody onBindViewHolder()
.
Aby zachować stan wyboru wśród zdarzeń cyklu życia aktywności,
musi wywoływać tag śledzenia wyboru
onSaveInstanceState()
oraz
onRestoreInstanceState()
z metody
onSaveInstanceState()
oraz
onRestoreInstanceState()
metod weryfikacji danych. Aplikacja musi również zapewniać unikalny identyfikator wyboru w funkcji
SelectionTracker.Builder
. Ten identyfikator jest wymagany, ponieważ
działanie lub fragment może mieć więcej niż jedną odrębną listę do wyboru,
wszystkie muszą być zachowane w zapisanym stanie.
Dodatkowe materiały
Dodatkowe informacje znajdziesz w dalszej części tego artykułu.
- Słonecznik
aplikacja w wersji demonstracyjnej, która używa
RecyclerView
. - Użycie RecyclerView, aby wyświetlić przewijaną listę.
- Androida Kotlin Fundamentals: podstawy RecyclerView do ćwiczenia w Codelabs.