546
Rozdział 13.
Kod adaptera CaptionedImagesAdapter
package com.hfad.wloskieconieco;
import android.support.v7.widget.RecyclerView;
class CaptionedImagesAdapter extends
RecyclerView.Adapter<CaptionedImagesAdapter.ViewHolder>{
public static class ViewHolder extends RecyclerView.ViewHolder {
// definiuje widoki używane do wyświetlania poszczególnych elementów danych
}
}
app/src/main
CaptionedImages
Adapter.java
WloskieCoNieco
java
com.hfad.wloskieconieco
Rozszerzamy klasę
RecyclerView,
więc musimy ją
zaimportować.
Dodanie adaptera widoku RecyclerView
W celu przygotowania adaptera widoku
RecyclerView
należy utworzyć klasę
dziedziczącą po
RecyclerView.Adapter
i przesłonić kilka jej metod. Cały ten
proces przedstawimy na kilku następnych stronach. Ponadto konieczne jest
zdefiniowanie wewnętrznej klasy
ViewHolder
, informującej adapter o tym,
w których widokach mają być prezentowane poszczególne elementy danych.
A zatem zajmiemy się teraz przygotowaniem adaptera widoku
RecyclerView
,
któremu nadamy nazwę
CaptionedImagesAdapter
. W tym celu
w Android Studio zaznacz w katalogu
app/src/main/java pakiet
com.hfad.
wloskieconieco
i wybierz z menu głównego opcję File/New.../Java class.
W polu nazwy wpisz „CaptionedImagesAdapter” i upewnij się, że klasa
zostanie umieszczona w pakiecie
com.hfad.wloskieconieco
. Następnie
zastąp wygenerowaną zawartość pliku
CaptionedImagesAdapter.java kodem
przedstawionym poniżej:
Jak widać, wewnętrzna klasa
ViewHolder
, którą także trzeba będzie
zdefiniować, jest kluczowym elementem adaptera. Na razie zostawimy ją
pustą, lecz wrócimy do niej w dalszej części rozdziału.
Zanim bardziej szczegółowo zajmiemy się klasą
ViewHolder
, dodamy
do naszego adaptera konstruktor, by poinformować go, na jakich danych
będzie operować.
ViewHolder definiujemy jako klasę
wewnętrzną. Zajmiemy się nią
w dalszej części rozdziału.
Obiekt ViewHolder jest używany
do określania tego, w których
widokach mają być prezentowane
poszczególne elementy danych.
Nie przejmuj się,
kiedy po dodaniu
powyższego kodu do
projektu Android
Studio wyświetli komunikaty o błędach.
To jedynie ostrzeżenie informujące,
że kod ciągle nie jest kompletny.
Wciąż musimy jeszcze przesłonić kilka
różnych metod adaptera, by określić,
w jaki sposób ma on działać — właśnie
tym zajmiemy się na kilku następnych
stronach.
Spokojnie
¨
Dane pizz
¨
Widok CardView
¨
Adapter
¨
Widok RecyclerView
¨
Kliknięcia
Widoki RecyclerView i CardView
547
jesteś tutaj
class CaptionedImagesAdapter extends
RecyclerView.Adapter<CaptionedImagesAdapter.ViewHolder>{
private String[] captions;
private int[] imageIds;
...
public CaptionedImagesAdapter(String[] captions, int[] imageIds){
this.captions = captions;
this.imageIds = imageIds;
}
}
Tych zmiennych będziemy
używać do przechowywania
informacji o pizzach.
Dane przekażemy do adaptera,
używając tego konstruktora.
Długość tablicy captions odpowiada liczbie
elementów danych w widoku RecyclerView.
…i implementacja metody getItemCount()
Musimy także poinformować adapter o liczbie elementów danych. W tym celu
należy zaimplementować metodę
getItemCount()
klasy
RecyclerViewAdapter
.
Metoda ta zwraca wartość typu
int
, określającą liczbę elementów danych.
W naszym przypadku tę wartość możemy określić na podstawie liczby podpisów
przekazanych do adaptera. Poniżej przedstawiony został kod tej metody:
class CaptionedImagesAdapter extends
RecyclerView.Adapter<CaptionedImagesAdapter.ViewHolder>{
...
@Override
public int getItemCount(){
return captions.length;
}
}
Teraz zajmiemy się obiektem
ViewHolder
.
Określenie, na jakich danych ma operować adapter...
Definiując adapter widoku
RecyclerView
, musimy poinformować go, na jakich
danych ma operować. W tym celu musimy zdefiniować konstruktor, którego
parametry będą określać typy danych używanych przez adapter.
W naszym przykładzie chcemy, by adapter pobierał podpisy będące łańcuchami
znaków oraz identyfikatory obrazków będące liczbami całkowitymi (
int
). Dlatego
nasz konstruktor będzie miał parametry typu
String[]
oraz
int[]
, a przekazane
tablice zapiszemy w zmiennych prywatnych. Właśnie tak działa kod przedstawiony
poniżej. Możesz bądź to zaktualizować na jego podstawie swoją wersję pliku
CaptionedImagesAdapter.java, bądź też poczekać do momentu, gdy w dalszej części
rozdziału przedstawimy kompletny kod adaptera.
app/src/main
CaptionedImages
Adapter.java
WloskieCoNieco
java
com.hfad.wloskieconieco
app/src/main
CaptionedImages
Adapter.java
WloskieCoNieco
java
com.hfad.wloskieconieco
¨
Dane pizz
¨
Widok CardView
¨
Adapter
¨
Widok RecyclerView
¨
Kliknięcia
¨
Dane pizz
¨
Widok CardView
¨
Adapter
¨
Widok RecyclerView
¨
Kliknięcia
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.