268
Rozdział 7.
Adaptery
Aktualizacja układu activity_drink_category.xml
W pliku activity_top_level.xml do powiązania danych z widokiem listy
zastosowaliśmy atrybut
android:entries
. Rozwiązanie to działało,
gdyż dane były przechowywane w formie zasobu, jako statyczna tablica
łańcuchów znaków. Tablica ta została zdefiniowana w pliku
strings.xml,
dzięki czemu bez problemów mogliśmy się do niej odwołać w następujący
sposób:
android:entries=”@array/options”
gdzie
options
było nazwą tablicy łańcuchów znaków.
Jednak atrybut
android:entries
można stosować wyłącznie w przypadku,
gdy dane pochodzą ze statycznej tablicy zdefiniowanej w pliku
strings.xml.
A co we wszystkich innych sytuacjach? Co zrobić, gdy dane pochodzą
z tablicy utworzonej programowo w kodzie Javy albo z bazy danych?
W takim przypadku zastosowanie atrybutu
android:entries
nie zadziała.
Jeśli musimy powiązać widok listy z danymi pochodzącymi z innego
źródła niż zasób będący tablicą łańcuchów znaków, to będziemy musieli
zastosować inne rozwiązanie będziemy musieli napisać w aktywności
kod, który odpowiednio powiąże te dane z widokiem listy. W naszym
przypadku musimy powiązać widok listy z tablicą
drinks
w klasie
Drink
.
¨
Dodanie zasobów
¨
TopLevelActivity
¨
DrinkCategoryActivity
¨
DrinkActivity
app/src/main
TopLevel
Activity.java
Coffeina
java
com.hfad.coffeina
Oto kod pliku activity_drink_category.xml(kursywa). Jak widać jest to prosty układ
liniowy zawierający jedynie widok
ListView
. Zaktualizuj swoją wersję pliku activity_
drink_category.xml tak by była identyczna z kodem zamieszczonym poniżej:
Istnieje jedna kluczowa różnica pomiędzy widokiem
ListView
tworzonym
w tym pliku, oraz tym, który utworzyliśmy w pliku activity_top_activity.xml:
tutaj nie ma atrybutu
android:entries
. Ale dlaczego?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.hfad.starbuzz.DrinkCategoryActivity">
<ListView
android:id="@+id/list_drinks"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Ten układ musi zawierać
tylko jeden widok ListView.

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.