Göm menyn

Laboration 1 - Interaktion och datamodeller

Syfte

Användare är olika, och även samma användare kan vilja interagera på olika sätt med samma applikation beroende på dennes mål med användandet. Det är därför viktigt för många användargränssnitt att hantera flera former av interaktion för att uppnå samma mål.

Uppgift

I denna laboration är uppgiften att tillhandahålla två sätt att traversera och visualisera data i en trädliknande struktur. Användargränssnittet består dels av en trädliknande komponent som tillhandahålls av ExpandableListView (Det går att ersätta den med RecylerView) och dels av en TextField där den aktiva noden representeras som en sökväg som i UNIX (exempelvis /medium/yellow ). Båda interaktionsmetoderna ska fungera parallellt på ett snyggt och konsistent sätt. Detta innebär att om en nod är markerad i den ena vyn så ska den också vara det i den andra (du ska alltså markera det sista elementet i sökvägen). Följande krav ställs på applikationen:

  • Applikationen ska använda en lämplig layouthanterare och klara olika storlekar på fönstret.
  • Fyll trädet med hierarkisk data som du skapat själv, minst 10 noder vettigt fördelade i minst 2 nivåer. Några (men inte alla) ska ha identiska sökvägar, dvs minst 2 barn-noder i varje förälder-node.
  • När en nod väljs så ska vägen från rotnoden till den aktuella noden synas i textfältet (exempelvis "/medium/yellow").
  • Om ingenting är markerat i trädet så ska "/" synas i textrutan.
  • När någonting skrivs i textfältet som inte matchar något i trädet helt, men som kan matcha om användarendaren fortsätter skriva så skall den senast matchade noden vara markerad. Textfältets bakgrundsfärg skall vara vit
  • När någonting skrivs i textfältet som inte kan matcha något i trädet så ska inget vara markerat i trädet, men textfältets bakgrundsfärg skall vara röd.
  • När något skrivs som matchar en nod i trädet skall denna markeras. Trädet skall automatiskt expanderas så att den aktiva noden syns. Det räcker att den första matchade noden markeras.

Tips

  • Vilka datamodeller finns redan (Vilken används i ExpandableListView)? Vilka datamodeller och/eller actions är du intresserad av? Behöer du skapa en ny datamodell som passar dig eller finns det en som passar dig.
  • Hur ska du få de olika delarna att samverka, särskilt när det gäller att hålla ordning på markeringarna. Fundera över om designmönstret Mediator kan hjälpa.

Redovisning

Demonstrera dina applikation för labassistenten, assistenten kan be dig förklara delar av koden. Assistenten berättar hur hen vill att du lämnar in din kod.


Sidansvarig: Eva Blomqvist
Senast uppdaterad: 2023-10-30