13 38 Update List View2

Notre nouvel élément apparaît bien dans la ListView, mais il n'est pas sélectionné automatiquement. L'utilisateur s'attend pourtant à voir l'élément qu'il vient de créer apparaître et être mis en focus. Plutôt que d'aller chercher le dernier élément de la liste après ajout, il est plus sûr de faire renvoyer le TodoItem créé par la méthode processResults().

Modifier processResults et sélectionner l'élément

Dans le DialogController, nous changeons la signature de processResults() de void en TodoItem. Nous créons une variable locale TodoItem newItem dans laquelle nous instancions le nouveau TodoItem, nous l'ajoutons via TodoData.getInstance().addTodoItem(newItem), puis nous le retournons. Côté Controller principal, nous stockons la valeur retournée : TodoItem newItem = controller.processResults(), puis nous appelons todoListView.getSelectionModel().select(newItem).

En testant, nous remarquons un petit bug d'affichage dans la colonne de description. Dans le FXML du dialogue, le TextField a un GridPane.columnIndex à 0 au lieu de 1, ce qui le superpose au label. Nous corrigeons cette valeur. À la relance, ajouter un élément le place et le sélectionne immédiatement dans l'interface : la fonctionnalité est désormais complète.

Dernière finition : la barre de titre du dialogue est vide. Au moment de l'instanciation, nous ajoutons simplement dialog.setTitle("Add a new Todo Item"). Au lancement, le dialogue affiche bien son titre. Dans la prochaine vidéo, nous remplacerons cette stratégie de mise à jour manuelle par la liaison de données (data binding) avec une ObservableList, ce qui est l'approche recommandée pour une vraie application.

En résumé

Cette leçon aborde la mise à jour de la vue de liste après la création d'un nouvel élément. L'instructeur explique comment modifier la méthode `processResults` pour qu'elle retourne l'élément créé, permettant ainsi la sélection automatique du nouvel élément dans la liste. Il corrige aussi un problème avec la colonne description du formulaire et ajoute un titre au dialogue d'ajout.

Points clés

  • Modification de la méthode processResults pour retourner un élément ToDoItem au lieu de void
  • Utilisation du modèle de sélection pour sélectionner automatiquement le nouvel élément ajouté dans la liste
  • Correction du problème de positionnement de la colonne description (GridPane column index = 1)
  • Ajout d'un titre au dialogue d'ajout avec setTitle()
  • Vérification que l'élément apparaît et est sélectionné immédiatement après sa création

Questions fréquentes

Pourquoi le nouvel élément n'était-il pas sélectionné après sa création?

Car la méthode processResults retournait void. Sans accès à l'élément créé, on ne pouvait pas utiliser le modèle de sélection pour le sélectionner automatiquement.

Quel était le problème avec la colonne description du formulaire?

L'index de colonne GridPane du champ TextField description était défini à 0 au lieu de 1, ce qui positionnait le champ au mauvais endroit dans le dialogue.

Quel est l'objectif de la prochaine vidéo?

Modifier la façon dont on remplit la ListView, car la méthode actuelle n'est pas recommandée pour une application réelle, même si elle fonctionne.