Oppgave - ToDo App med Room database og git
-
Lag et repository p? github og klon repositoriet.
- Lag et Androis Studios prosjekt i den mappen som ble opprettet
- Put endringene dine inn i staging area (git add)
- Legg filene til det lokale repositoriet (git commit -m)
- Last opp filene til github (git push)
-
Lag en branch som heter "feat/ui" og bytt til den branchen
-
Lag en Composable komponent som heter "ToDoScreen"
- Skal best? av en LazyColumn som holder p? en liste med gj?rem?l
- Hvert gj?rem?l skal bli vist i et Card-composable med navn og beskrivelse
- P? bunnen av skjermen skal vi la brukeren kunne fylle inn i input felt for navn og beskrivelse for gj?rem?let. I tillegg skal det v?re en knapp som legger til et gj?rem?l basert p? hva som er i input feltene.
-
Legg til f?legende dependencies i prosjektet:
val room_version = "2.6.1"
implementation("androidx.room:room-runtime:$room_version")
ksp("androidx.room:room-compiler:$room_version")
implementation("androidx.room:room-ktx:$room_version")
-
Lag en ViewModel som heter "ToDoScreenViewModel"
- Den skal holde p? en StateFlow som er av typen ToDoScreenUIState ==> StateFlow<ToDoScreenUIState>
- ToDoScreenUIState data klassen skal ha en variabel "tasks" som holder p? en liste med Task-objekter
-
data class ToDoScreenUiState( val tasks: List<Task> = listOf() ) @Entity data class Task( @PrimaryKey(autoGenerate = true) val id: Int = 0, val name: String, val desc: String, )
- ViewModelen skal st?tte f?lgende funksjoner (implementer n?r det passer):
- oppdatere UIState med alle tasks fra databasen
- fjerne en eksisterende Task fra databasen
- legge til en ny task i databasen
-
Merge branchen din "feat/ui" med main og lag en ny branch fra main som heter "feat/database" og bytt til denne branchen
-
Utvid data laget ved ? lage "ToDoRepository.kt", "Task.kt" (fra ovenfra), "ToDoDao.kt", "ToDoDatabase.kt"
- ToDoDatabase-en skal holde p? Task entiteter og inneholde en ToDoDao
- ToDoDao skal st?tte:
- Insert av en Task entitet
- Slette en Task entitet
- Hente alle Task entiteter
- ToDoRepository skal st?tte funksjonene i ToDoViewModel-en ved bruk av ToDoDao
-
Koble alt dette opp ved ? opprette instanser av dem og legg dem inn som argumenter der hvor parameterne sp?r om det
- Kan v?re noe kluss med Context