Android kotlin – la réservation
Intro
- réaliser le diagramme de classe de l’application. On pourra utiliser https://app.diagrams.net/
Partie 1 – parcelable – récupérer la réservation
Livrable : oless/mission2/…
On va passer un objet entre deux activity
- créer une activity ReservationFormActivity
- créer une activity ReservationConfirmActivity
- réaliser un bouton qui permette de passer de l’activity Form à Confirm. On utilisera un LinearLayout pour le bouton
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:gravity="center"> </LinearLayout>
- créer une classe Kotlin Reservation puis ALT+entré->Add Parcelable Implementation
data class Reservation(val nomHotel : String, val dateDebut: LocalDate, val dateFin: LocalDate): Parcelable { }
- les dates posent problème, modifier le code comme suit
data class Reservation(val nomHotel : String, val dateDebut: LocalDate, val dateFin: LocalDate ): Parcelable { @RequiresApi(Build.VERSION_CODES.O) constructor(parcel: Parcel) : this( parcel.readString().toString(), LocalDate.parse(parcel.readString()), LocalDate.parse(parcel.readString()) ) { } override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeString(nomHotel) parcel.writeString(dateDebut.toString()) parcel.writeString(dateFin.toString()) } override fun describeContents(): Int { return 0 } companion object CREATOR : Parcelable.Creator<Reservation> { @RequiresApi(Build.VERSION_CODES.O) override fun createFromParcel(parcel: Parcel): Reservation { return Reservation(parcel) } override fun newArray(size: Int): Array<Reservation?> { return arrayOfNulls(size) } } }
- créer une réservation dans ReservationFormActivity puis la passer en extra. On oubliera pas d’ajouter un id à notre bouton.
val reservation= Reservation("Otelo", LocalDate.parse("2020-10-10"),LocalDate.parse("2020-10-18")) button_form.setOnClickListener{ val intent = Intent(this, ActivityReservationConfirm::class.java) intent.putExtra("reservation",reservation) startActivity(intent) }
- modifier activity_reservation_confirm pour contenir 3 textView String avec un id. On utilisera un LinearLayout.
- récupérer les informations de la réservation dans ReservationConfirmActivity
val reservation = intent.getParcelableExtra<Reservation>("reservation") nom_textView.setText("Hotel: ${reservation!!.nomHotel}") dateDebut_textView.setText("Date de début: ${reservation.dateDebut}") dateFin_textView.setText("Date de fin: ${reservation.dateFin}")
- ajouter un bouton dans MainActivity pour acceder à ReservationForm
- tester
Partie 2 – le formulaire
Livrable : oless/mission2/…
- modifier activity_reservation_form pour permettre de saisir le nom de l’hôtel et les deux dates. On pourra utiliser le mode design d’Android Studio
- récupérer les informations dans ReservationFormActivity au click du bouton pour créer la réservation
val reservation= Reservation(nom_view.text.toString(), LocalDate.parse(dateDebut_view.text),LocalDate.parse(dateFin_view.text))
- tester