假如你有一个列表,含有p1,p2,p3…个元素。
你筛选得到其中的某些元素(用list成员的某些属性进行筛选)
下面用Group作为条件筛选。
在MIan class
public static ObservableList<Person> personData = FXCollections.observableArrayList();//原本的List
private static ObservableList<Person> backupData = FXCollections.observableArrayList();//备份数据
static Filter filter = new Filter();//筛选器,代码在下面
backupData.addAll(personData);//将数据备份
public void applyFilter(String Group) {//分组筛选
filter.setData(personData);
filter.setFilter(Group);
setFilteredData(filter.getData());
}
public static void setFilteredData(ObservableList<Person> personData) {
MainApp.personData = personData;
}
//新建一个筛选器类
public class Filter {
private ObservableList<Person> data = FXCollections.observableArrayList();//创建
public void setFilter(String filter){
List<Person> copy = new ArrayList<Person>(data);
for(Person f: copy) {
if(f.getFirstName()!=filter) data.remove(f);//筛选
}
}
}
public ObservableList<Person> getData() {
return data;
}
public void setData(ObservableList<Person> data) {
this.data = data;
}
}
调用applyFilter()函数即可筛选
你可以用personData.addAll(backupData);将数据还原。
//网上学习到的方法,跟大家分享。
//若有侵权,可联系我,我会删除。