Ich muss meine Listenelemente über GetFilter-Methode filtern, in meiner Model-Klasse habe ich eine Array-Variable mit dem Namen genre
.Suchfilter in ListView für Array von Zeichenfolgen mit Android SearchView
Dieses Genre ist manchmal ein Wort, und manchmal mehr als eins getrennt mit ,
. Zum Beispiel:
Android, iPhone, BlackBerry.
in meinem Code Nun, wenn ich versuche, für einen Eintrag in meiner Liste suchen, es wird nur das erste Wort suchen (android). Mit anderen Worten, wenn ich versuche, nach dem iPhone zu suchen, wird dieses Element nicht in meiner neuen gefilterten Liste angezeigt.
Im unteren Code weiß ich, dass ich es falsch mache, aber können Sie mir bitte helfen, es zu korrigieren?
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
dataList = (List<ProductLocal>) results.values;
notifyDataSetChanged();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
List<ProductLocal> filteredList = new ArrayList<>();
constraint = constraint.toString().toLowerCase();
for (int i = 0; i < dataListFilter.size(); i++) {
ProductLocal dataNames = dataListFilter.get(i);
String genreStr = "";
for (String str : dataNames.getGenre()) {
genreStr += str;
}
genreStr = genreStr.length() > 0 ? genreStr.substring(0,genreStr.length() - 2) : genreStr;
if (genreStr.toLowerCase().startsWith(constraint.toString())) {
filteredList.add(dataNames);
}
}
results.count = filteredList.size();
results.values = filteredList;
return results;
}
};
return filter;
}
Und meine andere Frage ist:
Wie ich nach Artikeln mit mehr als einem Genre mit ,
seperatted suchen?
Zum Beispiel query = android,blackberry
und Ergebnis kommt mit allen Einzelteilen bis, dass diese beiden Genres
Es funktioniert für einzelne Stichwortsuche, aber wenn ich versuche, Multi-Keyword-Suche zu machen Es wird meine gefilterte Liste duplizieren und nicht für das zweite Keyword funktionieren. – DastakWall
Wenn Platz nach Komma ist, müssen Sie die Filterstring trimmen – SAJ
Immer noch das gleiche, aber ich werde Ihre Antwort akzeptieren, weil Sie bereits meine Hauptfrage beantwortet, und vielen Dank. – DastakWall