RecyclerView w Kotlinie czyli lista z elementami

Kliknij i wspomóż mnie :)

Android

Kod wykorzystany w tym artykule pochodzi z mojej przykładowej aplikacji MVP. Repozytorium można znaleźć tutaj:

Github

Co to jest RecyclerView?

RecyclerView to jeden z komponentów w systemie Android. Odpowiedzialny jest za wyświetlanie listy elementów o danym układzie (layout).

Jak możemy przeczytać w oficjalnej dokumentacji: RecyclerView jest następcą ListView, który jest bardziej zaawansowany i elastyczny.

Jak to działa?

Tłumacząc to bardzo prosto. ReyclerView za pomocą adaptera bierze widoki (np. CardView) oraz dane i łączy je wykorzystując ViewHolder.

Układ elementów definiuje LayoutManager. W tabeli poniżej opisane są 3 rodzaje:

  • LinearLayoutManager - układa elementy jeden po drugim
  • GridLayoutManager - układa regularnie elementy w kolumnach
  • StaggeredGridLayoutManager - układa elementy o różnych rozmiarach

Jak zaimplementować RecyclerView do projektu?

Jest to jeden z tych komponentów, które musimy zdefiniować w build.gradle.

Następnie należy dodać widok tam, gdzie chcemy go użyć.

Ja w tym przykładzie korzystam z AndroidX. Google rekomenduje podmianę wszystkich komponentów właśnie na tę wersję.

AndroidX
Pełny kod widoku

Ostatnim krokiem do wykonania jest zainicjowanie kodu w naszym Activity.

Za pomocą apply konfigurujemy elementy naszego RecyclerView zdefiniowanego wcześniej. O apply w Kotlinie możesz przeczytać więcej tutaj:

Mastering Kotlin standard functions: run, with, let, also and apply

Przy okazji pierwszy raz pojawia się adapter. Go opiszemy w następnym akapicie.

RecyclerView a Adapter

Adapter jest najbardziej rozbudowaną częścią konfiguracji. To za pomocą adaptera określamy ile będzie elementów, w jakich widokach oraz jakie dane są wprowadzane.

Aby klasa była adapterem musi dziedziczyć po RecyclerView.Adapter oraz wskazywać na ViewHolder.

ViewHolder jak nazwa wskazuje jest odpowiedzialny za przechowywanie widoku i łączenie danych.

Jako parametry klasa przyjmuje data class Topic oraz listener do reagowania na kliknięcia. To podejście przejąłem od Antonio Leivy:

Writing a RecyclerView Adapter in Kotlinv

O data class możesz przeczytać u mnie:

Data class

W funkcji onCreateViewHolder tworzymy instancję ViewHolder, która zawiera wyświetlany element.

card_topic.xml

Funkcja onBindViewHolder podpina dane do widoku. W tym przypadku za pomocą bind.

Ostatnie kroki

Mając zdefiniowaną klasę adaptera można zaimplementować go w Activity.

Adapter od teraz przyjmuje dane w postaci ArrayList i zwraca nam callback, gdzie możemy reagować na kliknięcia.

Jest on zadeklarowany za pomocą lazy co oznacza, że zostanie utworzony tylko wtedy, kiedy będzie potrzebny.

Po tym ja uzyskałem taki efekt w mojej aplikacji 😊

Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊

O mnie

Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.

Najnowsze posty

Kliknij i wspomóż mnie :)

Zostańmy w kontakcie

* Wymagane
Kliknij i wspomóż mnie :)
Otwórz Sklep Play

Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.