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" } }