Créé en 2020 et modifié le 10 Sep 2020

Android kotlin – la réservation

 

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