How to highlight search text result in RecyclerView. I found some posts regarding Spannable TextView, but not sure where to implement in my case. Appreciate you can look an
Use inside on Bind view holder in Adapter class
String title1 = Itemlist.get(position).getN_stall_name().toLowerCase(Locale.getDefault());
holder.title.setText(Itemlist.get(position).getN_stall_name());
if (title1.contains(searchText)) {
int startPos = title1.indexOf(searchText);
int endPos = startPos + searchText.length();
Spannable spanString = Spannable.Factory.getInstance().newSpannable(holder.title.getText());
spanString.setSpan(new ForegroundColorSpan(Color.RED), startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.title.setText(spanString);
}
And now create public method in Adapter class
public void updateList(List list, String searchText) {
Itemlist = new ArrayList<>();
Itemlist.addAll(list);
this.searchText = searchText;
notifyDataSetChanged();
}
Search view listener use inside Activity where you use search view
SearchView searchview=findviewbyid(R.id.searchview);
searchview.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
newText = newText.toLowerCase();
ArrayList newList = new ArrayList<>();
for (GetShop userInfo : items) {
String type = userInfo.getN_stall_name().toLowerCase();
if (type.contains(newText)) {
newList.add(userInfo);
}
}
disp_adapter.updateList(newList, newText);
return true;
}
});