Comment mettre en œuvre arraylist dans le ListView?

TigerTN:

Je viens juste de commencer avec JavaFX que je trouve assez cool, donc im essayant de mettre en œuvre la arraylist d'une classe ToDListItem dans le listView de mon fichier FXML

J'ai essayé d'ajouter des éléments dans mon arraylist qui est todoitems, puis mettez tout dans le listView qui a une id « ToDoList » dans mon fichier FXML, mais il semble que rien happpend lorsque l'affichage de l'interface utilisateur

package sample;
import javafx.fxml.FXML;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import sample.ToDoList.ToDoItem;

import java.time.LocalDate;
import java.time.Month;
import java.util.ArrayList;
import java.util.List;

public class Controller {
    private List<ToDoItem> todoitems;

    @FXML
    private ListView ToDoList ;

    public void intialize(){
        ToDoItem item1= new ToDoItem("Going to Sea","Going to Sea with thamer and kais",
                LocalDate.of(2020, Month.JUNE,16));
        ToDoItem item2= new ToDoItem("JavaFx","Getting ready for real programming real world stuff",
                LocalDate.of(2020, Month.JULY,14));
        ToDoItem item3= new ToDoItem("Sleep & Chill","Going to Watch Youtube Later & Chill",
                LocalDate.of(2020, Month.JANUARY,13));

        todoitems= new ArrayList<>();

        todoitems.add(item1);
        todoitems.add(item2);
        todoitems.add(item3);

        ToDoList.getItems().setAll(todoitems);
        ToDoList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
    }
}

fichier FXML.

<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.control.ListView?>
<BorderPane fx:controller="sample.Controller"  xmlns:fx="http://javafx.com/fxml">
  <left>
      <ListView fx:id="ToDoList">
      </ListView>
  </left>
</BorderPane>

Je n'ai pas de résultat lorsque l'interface utilisateur affichée

Oleksandr:

La méthode doit être nommé initialize mais pas int ialize. Je préfère utiliser javafx.fxml.Initializable pour éviter problème faute d' orthographe.

Ce n'est pas l'approche recommandée :

List<T> content = ...
getItems().setAll(content);

Le problème avec l'approche présentée ci-dessus est que la liste du contenu est copié dans la liste des éléments.

Utilisation:

ObservableList<T> content = ...
listView.setItems(content);
public class Controller {
    private final List<ToDoItem> todoItems = FXCollections.observableArrayList();

    @FXML
    private ListView ToDoList ;

    public void initialize() {
        ToDoList.setItems(todoItems);
        ToDoList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
        populate();
    }

    private void populate () {
        todoItems.add(new ToDoItem("Going to Sea","Going to Sea with thamer and kais",
                LocalDate.of(2020, Month.JUNE,16)));
        todoItems.add(new ToDoItem("JavaFx","Getting ready for real programming real world stuff",
                LocalDate.of(2020, Month.JULY,14)));
        todoItems.add(new ToDoItem("Sleep & Chill","Going to Watch Youtube Later & Chill",
                LocalDate.of(2020, Month.JANUARY,13)));
    }
}

Assurez - vous que la méthode ToDoItem.toString est surchargée correctement.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=234148&siteId=1
conseillé
Classement