当我想要随机播放FilteredList
时,我会收到java.lang.UnsupportedOperationException
。
如何处理?
代码:
FilteredList<Card> filteredData =
new FilteredList(ob, filterByOption(option.get("selectedCard"), option.get("chapter")));
if (option.get("cardOrder") == "shuffle") {
filterCards=filteredData;
FXCollections.shuffle(filterCards);
}
答案 0 :(得分:5)
正如documentation所述:
包装ObservableList 并使用提供的内容过滤其内容 谓语。 传播ObservableList中的所有更改 立即到FilteredList。
因此,您可以改为对基础来源ObservableList
进行改组:
FXCollections.shuffle(ob);
示例:强>
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);
输出:
[Amanda, Adam, Albus]
[Adam, Albus, Amanda]