Je n'ai pas réussi à le faire fonctionner, et les exemples que j'ai trouvés ne fonctionnaient qu'avec un seul RowFilter.andFilter ou un RowFilter.orFilter. Existe-t-il un moyen d'en combiner deux pour obtenir quelque chose comme (A || B) && (C || D) ? Vous trouverez ci-dessous un exemple de code illustrant ce que je tente de faire.
ArrayList<RowFilter<Object,Object>> arrLstColorFilters = new ArrayList<RowFilter<Object,Object>>();
ArrayList<RowFilter<Object,Object>> arrLstCandyFilters = new ArrayList<RowFilter<Object,Object>>();
RowFilter<Object,Object> colorFilter;
RowFilter<Object,Object> candyFilter;
TableRowSorter<TableModel> sorter;
// OR colors
RowFilter<Object,Object> blueFilter = RowFilter.regexFilter("Blue", myTable.getColumnModel().getColumnIndex("Color"));
RowFilter<Object,Object> redFilter = RowFilter.regexFilter("Red", myTable.getColumnModel().getColumnIndex("Color"));
arrLstColorFilters.add(redFilter);
arrLstColorFilters.add(blueFilter);
colorFilter = RowFilter.orFilter(arrLstColorFilters);
// OR candies
RowFilter<Object,Object> mAndMFilter = RowFilter.regexFilter("M&M", myTable.getColumnModel().getColumnIndex("Candy"));
RowFilter<Object,Object> mentosFilter = RowFilter.regexFilter("Mentos", myTable.getColumnModel().getColumnIndex("Candy"));
arrLstCandyFilters.add(mAndMFilter);
arrLstCandyFilters.add(mentosFilter);
candyFilter = RowFilter.orFilter(arrLstCandyFilters);
// Mentos and M&Ms that are red or blue (this is where I'm stuck)
sorter.setRowFilter(RowFilter.andFilter(candyFilter, colorFilter); //this does not work
Si quelqu'un pouvait fournir un extrait fonctionnel de ce que j'essaie de faire dans la dernière ligne, ce serait très apprécié. Je maintiens actuellement deux modèles de table distincts pour contourner ce problème, et j'aimerais éviter de dupliquer les données.
Merci, Kai