Dostosowywanie listy dynamicznej Zawiera Android Jetpack.

Wypróbuj sposób tworzenia wiadomości
Jetpack Compose to zalecany zestaw narzędzi UI na Androida. Dowiedz się, jak korzystać z układów w funkcji Utwórz

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 jak ListView układ.
  • GridLayoutManager: rozmieszcza elementy w dwuwymiarowej siatce, tak jak kwadraty na szachownicę. Korzystanie z RecyclerView z GridLayoutManager udostępnia takie funkcje jak GridView 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:

  1. 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:

    Szczegółowe informacje o typach kluczy wyboru znajdziesz w sekcji SelectionTracker.Builder

  2. Wdrażaj ItemDetailsLookup
  3. 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.

  4. Zaktualizuj element View obiektów w RecyclerView, 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:

  5. Użyj formatu: ActionMode by zapewnić użytkownikowi narzędzia do wykonania wybranej czynności.
  6. 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.

  7. Wykonanie wszelkich zinterpretowanych działań dodatkowych.
  8. 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

  9. Zmontuj wszystko za pomocą narzędzia SelectionTracker.Builder.
  10. 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().

  11. Uwzględnij zaznaczenie w aktywność cyklu życia.
  12. 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.