Cieľom deviateho cvičenia je precvičiť si prácu s trvalými úložiskami dát a vytváranie jednoduchých zoznamov typu RecyclerView.
Shared Preferences je najjednoduchší spôsob ukladania dát (kľúč-hodnota), ktorý
slúži na ukladanie relatívne malého množstva dát.
Kľúče sú tvorené reťazcami ( String ) a
hodnoty primitívnymi dátovými typmi. (Int, Float, Double, Boolean..)
Zápis môže vyzerať napríklad takto:
A čítanie napríklad takto:
SQLite je open source relačná databáza, ako MySQL alebo Postgresql. Ukladá dáta v lokálnom súborovom systéme mobilného zariadenia. Na rozdiel od iných databáz, SQLite ukladá dáta v jednoduchých súboroch, do ktorých je možné zapisovať a čítať pomocou SQLite knižnice. Táto knižnica spolu s ďalšími pomocnými triedami je súčasťou štandardnej knižnice Androidu.
Room Db je databázová, objektovo mapovacia knižnica, ktorá poskytuje abstraktnú vrstvu nad SQLite databázou. K tejto databáze umožňuje prístup s plnou podporou, poskytujúc pohodlné API na dotazovanie.
Je tvorená tromi hlavnými komponentmi:
android.arch.persistence.room
def room_version = "1.1.1" implementation "android.arch.persistence.room:runtime:$room_version" annotationProcessor "android.arch.persistence.room:compiler:$room_version"
def room_version = "2.4.3" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version"
Movie
s prázdnym konštruktorom (RoomDb ho vyžaduje) a pridáme anotáciu (@Entity):2.1 Vytvoríme a anotujeme premenné reprezentujúce stĺpce v tabuľke:
2.2 Pridáme getter a setter pre vytvorené premenné:
2.3 Pridáme parametrický konštruktor:
MovieDao
a pridáme metódy, kt. chceme využívať pre prístup k dbs. MovieDatabase
, ktorá bude potomok triedy RoomDatabase
DbTools
, ktorá nam poskytne singleton inštanciu dbs:MainActivity.java
vytvoríme členskú triedu DbGetData
, kt. rozširuje AsyncTask<Movie, Integer, List<Movie>>
...movieDao().getAll()
získame dáta....movieDao().insertMovies(movies);
Pre zobrazenie dynamického obsahu vo forme zoznamov poznáme v Androide viacero spôsobov, ako je napríklad:
V nasledujúcich krokoch si ukážeme implementáciu zoznamu RecyclerView, ktorá môže vyzerať napríklad takto:
V prvom kroku si vytvoríme layout a pridáme <RecyclerView>
Následne vytvoríme layout movie_item.xml
s <TextView>
Vytvoríme triedu MovieModel
s korešpondujúcim dátovým modelom
Vytvoríme pomocnú triedu Tools
, ktorá nam zabezpečí testovacie dáta:
Pridáme triedu MovieHolder
s jednotlivými TextViews a priradíme ich v konštruktore:
Vytvoríme triedu MovieAdapter
Upravíme triedu MainActivity