Cvičenie 4
Odporúčané Kurzy, pre cvičenie (optimálne si vyskúšať všetky kroky v kurze)
- Lekcia 3: Dokončiť posledné tri.
- Lekcia 4: Získavanie a odosielanie údajov cez internet.
- Lekcia 5: Ukladanie údajov do lokálnej databázy - Room.
Najmä tieto Codelaby:
- Ukladanie údajov vo ViewModel
- Využitie LiveData vo ViewModel.
- Zopakovanie základov SQL.
- Úvod do knižnice Room pre uloženie údajov do databázy.
- Ukladanie a čítanie z databázy pomocou Room.
- Repozitory - návrhový vzor pre prácu z údajmi.
- Repozitory návrhovy vzor s využitím databázy slov.
Zadanie 4. časť
- Načítanie z JSON súboru z predchádzajúceho cvičenia nebude potrebné v aplikácii - od teraz sa zameriame na načítavanie JSON odpovede zo servera.
- Zamyslite sa a navrhnite ako by ste mohli ukladať informácie z pubs.json do relačnej SQLite databázy v mobile.
- Naprogramujte si architektúru vysvetlenú na prednáškach a tiež v kurze - ViewModel, Repozitár, LocalCache, Room, Retrofit,...
- Implementujte načítavanie z webservisu (nižšie) informácie pomocou Retrofit (s Coroutines) a pomocou napr. GSON adaptéra.
- Načítané informácie z webservisu uložte do databázy pomocou Room knižnice. (dbajte na vhodný zápis variabilného formátu údajov do tabuľky)
- Vo Fragmente so zoznamom podnikov, zobrazujte informácie z ViewModelu uložené v LiveData, ktoré sú z databázy. Ak sa objavia nové informácie v databáze po načítaní z webservisu, údaje by sa mali automaticky zobraziť
- V aplikácii nechajte aktívne len fragmenty - Zoznam podnikov (úvodná obrazovka), Detail podniku (z databázy). ( na ostatné zatiaľ nedajte možnosť používateľovi sa dostať - využijeme ich neskôr )
- Vo Fragmente - Zoznam podnikov používajte RecyclerView, ViewModel, LiveData, Pull-To-Refresh (obnovenie zo webservisu).
- Vo Fragmente - Detail podniku používajte vhodné zobrazenie dostupných informácií z databázy. Nezabudnite na využitie intentov na URL adresy, GPS súradnice, Telefónne čísla.
Popis webservisu
POST https://data.mongodb-api.com/app/data-fswjp/endpoint/data/v1/action/find
Access-Control-Request-Headers: *
api-key: API KEY
Content-Type: application/json
{
"collection": "bars",
"database": "mobvapp",
"dataSource": "Cluster0"
}
Ukazka odpovede:
{
"documents": [
{
"_id": "635857e2a613f32f7b528309",
"type": "node",
"id": 276918102,
"lat": 48.1278212,
"lon": 17.1000143,
"tags": {
"amenity": "pub",
"name": "Krčma Lipa",
"opening_hours": "Mo-Su 10:00-22:00"
}
}]
}
Vyhladanie podla atributov:
POST https://data.mongodb-api.com/app/data-fswjp/endpoint/data/v1/action/find
Access-Control-Request-Headers: *
api-key: API KEY
Content-Type: application/json
{
"collection": "bars",
"database": "mobvapp",
"dataSource": "Cluster0",
"filter": {
"tags.amenity": "pub",
"tags.name": "Krčma Lipa"
}
}