548
Rozdział 13.
Definicja obiektu ViewHolder
Zdefiniowanie obiektu ViewHolder
Obiekty
ViewHolder
służą do definiowania widoku lub widoków,
których widok
RecyclerView
powinien używać dla każdego
z elementów danych, na jakich operuje. Można je sobie wyobrazić
jako rodzaj pojemników przechowujących widoki, które chcemy
wyświetlać w widoku
RecyclerView
. Oprócz samych widoków obiekty
ViewHolder
zawierają także dodatkowe informacje przydatne dla
widoku
RecyclerView
, takie jak jego położenie w układzie.
W naszym przykładzie chcemy wyświetlić na karcie wszystkie
informacje o pizzy, co oznacza, że musimy poinformować, iż obiekt
ViewHolder
adaptera będzie używał widoku
CardView
. Poniżej
przedstawiliśmy kod, który to robi (kompletny kod adaptera zostanie
przedstawiony w dalszej części rozdziału):
...
import android.support.v7.widget.CardView;
class CaptionedImagesAdapter extends
RecyclerView.Adapter<CaptionedImagesAdapter.ViewHolder>{
...
public static class ViewHolder extends RecyclerView.ViewHolder {
private CardView cardView;
public ViewHolder(CardView v) {
super(v);
cardView = v;
}
}
}
app/src/main
CaptionedImages
Adapter.java
WloskieCoNieco
java
com.hfad.wloskieconieco
Nasz widok RecyclerView ma wyświetlać
widoki CardView, dlatego określiliśmy, że
obiekt ViewHolder będzie zawierać obiekt
CardView. Gdybyś chciał wyświetlić w widoku
RecyclerView inny typ danych, to tutaj
powinieneś go zdefiniować.
Podczas tworzenia obiektu
ViewHolder
koniecznie trzeba wywołać
konstruktor klasy bazowej, używając poniższego kodu:
To niezbędne, gdyż klasa bazowa
ViewHolder
zawiera metadane,
takie jak położenie elementu w widoku
RecyclerView
, konieczne
do prawidłowego działania adaptera.
Skoro zdefiniowaliśmy już obiekt
ViewHolder
, musimy poinstruować
adapter, jak może je tworzyć. W tym celu trzeba przesłonić metodę
onCreateViewHolder()
adaptera.
super(v);
ViewHolder
CardView
Każdy z naszych obiektów
ViewHolder będzie zawierać jeden
widok CardView. Plik układu
dla tych widoków CardView
przygotowaliśmy już we
wcześniejszej części rozdziału.
Używamy klasy CardView,
więc musimy ją
zaimportować.
Get Android Programowanie aplikacji. Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.