Android
2019-05-16
Kod wykorzystany w tym artykule pochodzi z mojej przykładowej aplikacji MVP. Repozytorium można znaleźć tutaj:
Github
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.
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:
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.
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.
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 😊
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ć.
Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.