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.roomdef 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 RoomDatabaseDbTools, 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