2017-05-31 1 views
4

Lorsque je veux mélanger un FilteredList, j'obtiens un java.lang.UnsupportedOperationException.Comment mélanger un FilteredList en java?

Comment gérer cela?

code:

FilteredList<Card> filteredData = 
    new FilteredList(ob, filterByOption(option.get("selectedCard"), option.get("chapter"))); 

if (option.get("cardOrder") == "shuffle") { 
    filterCards=filteredData; 
    FXCollections.shuffle(filterCards); 
} 

Répondre

5

Comme écrit dans le documentation:

encapsule un ObservableList et des filtres, il est contenu à l'aide fournie prédicats. Toutes les modifications dans ObservableList sont immédiatement propagées à à FilteredList.

Par conséquent, vous pouvez mélanger la source sous-jacente à la place ObservableList:

FXCollections.shuffle(ob); 

Exemple:

ObservableList<String> obsList = 
    FXCollections.observableArrayList("Amanda", "Bill", "Adam", "Albus", "Cicero"); 
FilteredList<String> fList = new FilteredList<>(obsList, s -> s.startsWith("A")); 

System.out.println(fList); 
FXCollections.shuffle(obsList); 
System.out.println(fList); 

Sortie:

[Amanda, Adam, Albus] 
[Adam, Albus, Amanda] 
+0

Je l'ai testé et il fonctionne correctement. Merci – user3235815

+2

@ user3235815: Vous pouvez accepter une réponse en cliquant sur la [coche vide] (http://meta.stackoverflow.com/a/5235/163188) à gauche. – trashgod