implémenter des actions sur nos tâches, en naviguant entre des Activity et partager des infos entre elle ou dans une autre application avec des Intent.

Prérequis: Terminez au moins l'étape "Ajout de tâche rapide" du TP 1

Dans le layout de vos item, ajouter un ImageButton qui servira à supprimer la tâche associée. Vous pouvez utiliser par exemple l'icône @android:drawable/ic_menu_delete

Aidez vous des lignes de code plus bas pour réaliser un "Click Listener" à l'aide d'une lambda en suivant ces étapes:

var onClickDelete: (Task) -> Unit = {}
onClickDelete(task)
myAdapter.onClickDelete = { task ->
    // Supprimer la tâche
}
startActivity(Intent(context, ...))
val createTask = registerForActivityResult(StartActivityForResult()) { result ->
  // dans cette callback on récupèrera la task et on l'ajoutera à la liste
}
createTask.launch(intent)
val newTask = Task(id = UUID.randomUUID().toString(), title = "New Task !")
val task = result.data?.getSerializableExtra("task") as Task?
companion object {
  const val TASK_KEY = "task"
}

Inspirez vous de ce que vous avez fait pour le bouton "supprimer" et le bouton "ajouter" pour créer un bouton "éditer" permettant de modifier chaque tâche en ouvrant l'activité DetailActivity pré-remplie avec les informations de la tâche en question:

mutableStateOf(initialTask ?: newTask)

Une façon plus classique de gérer les clicks d'un item est de définir une interface que l'on implémentera dans l'Activity/Fragment. Mettez à jour votre code pour utiliser cette méthode:

interface TaskListListener {
  fun onClickDelete(task: Task)
  fun onClickEdit(task: Task)
}

class TaskListAdapter(val listener: TaskListListener) : ... {
  // use: listener.onClickDelete(task)
}

class TaskListFragment : Fragment {
  val adapterListener : TaskListListener = object : TaskListListener {
    override fun onClickDelete(task: Task) {...}
    override fun onClickEdit(task: Task) {...}
  }
  val adapter = TaskListAdapter(adapterListener)
}

Que se passe-t-il pour votre liste si vous tournez votre téléphone pour passer en mode paysage ? 🤔