Laboratorium A5

Wyświetlanie oraz modyfikacje zawartości kolekcji / listy elementów

( Display all, Display selected item, Add new item, Update selected, Delete selected )

1) Podstawowe materiały pomocnicze na temat oprogramowania LazyColumn:

2) Usprawnienia - wydzielenie osobnego ViewModel

przechowującego dane aplikacji oraz bardziej złożone algorytmy (business logic)


ZADANIA:

  1. (WYMAGANE): Wykorzystując Jetpack Compose, napisz aplikację wyświetlającą listę kierunków na wybranym wydziale PWr (domyślnie WIT II stopnia). Do reprezentacji danych kierunku wykorzystaj klasę "modelu danych" pozwalającą połączyć kilka różnych właściwości obiektu (tak jak rekord w bazie danych) np.:
    data class **DaneKierunku**( val **id**:Int, val **nazwa** : String */*, val **opisKierunku** : String, val **iloscMiejsc** : Int, **. . .** */* )
    Wskazówka: do wyświetlania tej listy wykorzystaj komponent "LazyColumn" oraz przechowywanie stanu listy za pomocą "MutableStateList". np.:
    val listaKierunkow = remember{ mutableStateListOf<DaneKierunku>() } *//definicja pustej listy, do późniejszej modyfikacji*
    lub:
    val listaKierunkow = remember{ wygenerujPoczatkowaListe().toMutableStateList() }  *//lista z początkową zawartością*
    Oprogramuj wyświetlenie aktualnego stanu takiej listy oraz możliwość dodawania nowych elementów. UWAGA: jeżeli preferujesz inny temat wyświetlanej listy, na przykład "lista ulubionych zespołów muzycznych" czy "lista rodzinnych uroczystości: imienin, urodzin, rocznic", itp. to możliwa jest taka zamiana, ale wymaga dodatkowego opisu przy oddaniu zadania.

  2. (OPCJONALNE ROZSZERZENIE_1): Rozbuduj aplikację z punktu (1) o możliwość usuwania oraz poprawiania/aktualizowania danych zapisanych w wyświetlanej liście.

  3. (OPCJONALNE ROZSZERZENIE_2): w ramach doskonalenia struktury aplikacji, dodaj osobną klasę typu ViewModel przechowującą dane wyświetlanej listy oraz algorytmy związane z modyfikacjami jej zawartości (dodaj, usuń, aktualizuj, . . ., sortuj?, CRUD wyszukaj?) tak jak to pokazano w artykule "Understanding ViewModel ..." lub rozdziale "45. Working with ViewModels in Compose"