I'm trying to implement search filter with getFilter method in my custom adapter.
There are two models of search through the list.
- search for
titleof an item, - search for
genre[]of an item.
(But I'm just talking about genre here).
The below code is working fine, but what I need is just a little more customized way to search in genre[].
What I'm trying to achieve is: (What I want):
multi-keyword searching, each category separated with,. example: genre1,genre2
(What I have done):
When I type genre1,genre2 then it gives the items that have this sequence in genres, it won't give genre1,genre3,genre2 , or just genre1.
Can you help, please?
getFilter:
@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 + ",";
}
if (dataNames.getTitle().toLowerCase().startsWith(constraint.toString())
|| genreStr.toLowerCase().contains(constraint.toString())) {
filteredList.add(dataNames);
}
}
results.count = filteredList.size();
results.values = filteredList;
return results;
}
};
return filter;
}