544
Rozdział 13.
Kod układu
¨
Dane pizz
¨
Widok CardView
¨
Adapter
¨
Widok RecyclerView
¨
Kliknięcia
Kompletny kod pliku card_captioned_image.xml
Poniżej przedstawiony został kompletny kod pliku card_captioned_image.xml
(zaktualizuj swoją wersję tego pliku, by była identyczna z naszą):
<?xml version=”1.0” encoding=”utf-8”?>
<android.support.v7.widget.CardView
xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:card_view=”http://schemas.android.com/apk/res-auto”
android:id=”@+id/card_view”
android:layout_width=”match_parent”
android:layout_height=”200dp”
android:layout_margin=”5dp”
card_view:cardElevation=”2dp”
card_view:cardCornerRadius=”4dp”>
<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”>
<ImageView android:id=”@+id/info_image”
android:layout_height=”0dp”
android:layout_width=”match_parent”
android:layout_weight=”1.0”
android:scaleType=”centerCrop”/>
<TextView
android:id=”@+id/info_text”
android:layout_marginLeft=”4dp”
android:layout_marginBottom=”4dp”
android:layout_height=”wrap_content”
android:layout_width=”match_parent”/>
</LinearLayout>
</android.support.v7.widget.CardView>
Warto zwrócić uwagę na to, że powyższy układ w żaden bezpośredni
sposób nie odwołuje się do danych o pizzy. Oznacza to, że
z powodzeniem będziemy go mogli używać do wyświetlania dowolnych
danych składających się z obrazka oraz podpisu, na przykład
informacji o daniach z makaronu.
Skoro utworzyliśmy już układ dla widoku karty, zajmiemy się kolejnym
zagadnieniem — utworzeniem adaptera widoku
RecyclerView
.
<xml>
</xml>
app/src/main
card_
captioned_
image.xml
WloskieCoNieco
res
layout
Szerokość karty zostanie określona
przez element nadrzędny, a jej
wysokość będzie wynosić 200dp.
Szerokość obrazka zostanie określona
przez widok CardView. Zastosowaliśmy
typ skalowania „centerCrop”, aby
zapewnić, że obrazek zostanie
przeskalowany z zachowaniem
współczynnika proporcji.
Widoki ImageView oraz TextView
umieściliśmy w układzie LinearLayout,
gdyż CardView może mieć tylko jeden
bezpośredni element podrzędny.
Widok CardView zawiera widoki
ImageView oraz TextView.
Oto jak będzie wyglądał nasz
widok karty po dodaniu do
niego danych. Zrobimy to
przy użyciu adaptera widoku
RecyclerView.
Widoki RecyclerView i CardView
545
jesteś tutaj
¨
Dane pizz
¨
Widok CardView
¨
Adapter
¨
Widok RecyclerView
¨
Kliknięcia
¨
Dane pizz
¨
Widok CardView
¨
Adapter
¨
Widok RecyclerView
¨
Kliknięcia
card_
captioned_
image.xml
Jak działa adapter widoku RecyclerView?
Jak już napisaliśmy wcześniej, chcąc stosować w swojej aplikacji widok
RecyclerView
,
musimy zaimplementować adapter, który będzie w nim używany. Jest to konieczne,
gdyż w odróżnieniu od widoków list widok
RecyclerView
nie korzysta z żadnego
z wbudowanych adapterów dostępnych w systemie Android. Choć implementacja
własnego adaptera może się wydawać trudnym zadaniem, to jednak ma jedną ważną
zaletę: daje większą elastyczność niż ta, którą zapewniają wbudowane adaptery.
Adapter spełnia dwa podstawowe zadania: tworzy każdy z widoków, które następnie
będą prezentowane w widoku
RecyclerView
, oraz kojarzy każdy z tych widoków
z danymi. W naszym przykładzie w widoku
RecyclerView
chcemy wyświetlić zestaw
kart, z których każda będzie zawierać zdjęcie pizzy oraz jej nazwę. Oznacza to,
że adapter będzie musiał utworzyć każdą z kart i powiązać z danymi.
Na kilku następnych stronach pokażemy proces tworzenia adaptera widoku
RecyclerView
. Oto poszczególne etapy prac, które wykonamy:
Zaczniemy od dodania do naszego projektu klasy
RecyclerView.Adapter
.
Określimy dane, na których adapter powinien operować.
Chcemy, by nasz adapter operował na informacjach o pizzach.
Informacje o każdej z pizz składają się z nazwy oraz identyfikatora
zasobu graficznego; dlatego też do adaptera przekażemy tablicę
zawierającą nazwy pizz oraz identyfikatory zasobów.
Zdeniujemy widoki, w których adapter ma zapisywać dane.
Informacje o pizzach chcemy zastosować do wypełnienia danymi
zestawu kart, których postać określa plik układu
card_captioned_
image.xml
. Następnie musimy utworzyć zestaw takich kart, które
będą prezentowane w widoku
RecyclerView
; każda z kart będzie
przedstawiać jedną pizzę.
Powiążemy dane z kartami.
W końcu musimy wyświetlić informacje o pizzach na kartach.
W tym celu musimy wyświetlić nazwę pizzy w widoku
tekstowym
info_text
oraz jej zdjęcie w widoku
ImageView
o identyfikatorze
info_image
.
1
2
3
głupie pytania
Nie istnieją
P
: Dlaczego w Androidzie nie ma gotowych adapterów,
których można by używać w widokach
RecyclerView
?
O
:
Ponieważ adaptery widoków RecyclerView określają nie
tylko dane, które będą prezentowane. Oprócz nich określają także
widoki, które będą stosowane do wyświetlania poszczególnych
elementów kolekcji. Oznacza to, że adaptery widoków
RecyclerView nie tylko dają większe możliwości niż adaptery
list, lecz także od nich mniej uniwersalne.

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.