0

I'm using SearchView widget in my app and it works fine but I'm trying to highlight the text color of the search results and can't seem to do it.

i.e: RecyclerView item has the following text "Hey there" When a user searches for "Hey" then the color of this keyword should change.

Here's my filter code from the adapter:

    @Override
    public Filter getFilter() {
        return new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                String query = constraint != null ? constraint.toString() : null;

                // ----

                if (query != null && !query.isEmpty()) {
                    ArrayList<TextTypingObject> newFilteredTextTypingObjectArrayList = new ArrayList<>();

                    for (TextTypingObject textTypingObject : mTextTypingObjectList) {
                        if (textTypingObject.getTextTyping().toLowerCase(Locale.getDefault()).contains(query.toLowerCase(Locale.getDefault()))) {
                            newFilteredTextTypingObjectArrayList.add(textTypingObject);
                        }
                    }

                    // ----

                    mTextTypingObjectFilteredList = newFilteredTextTypingObjectArrayList;
                } else {
                    mTextTypingObjectFilteredList = mTextTypingObjectList;
                }

                // ----

                FilterResults filterResults = new FilterResults();
                filterResults.values = mTextTypingObjectFilteredList;
                filterResults.count = mTextTypingObjectFilteredList.size();

                return filterResults;
            }

            @Override
            protected void publishResults(CharSequence constraint, FilterResults filterResults) {
                /*if (filterResults.count == 0) {
                    // There is no "notifyDataSetInvalidated()" method in RecyclerView.Adapter
                } else {*/
                mTextTypingObjectFilteredList = (ArrayList<TextTypingObject>) filterResults.values;

                // ----

                notifyDataSetChanged();
                /*}*/
            }
        };
    }

SearchView from the fragment:

                        if (mSearchView != null) {
                            mSearchView.setQuery(null, true);
                            mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                                @Override
                                public boolean onQueryTextSubmit(String s) {
                                    Filter filter = mTextTypingCustomAdapter.getFilter();

                                    if (filter != null) {
                                        filter.filter(s);

                                        // ----

                                        mSearchView.clearFocus();

                                        // ----

                                        return true;
                                    }

                                    return false;
                                }

                                @Override
                                public boolean onQueryTextChange(String s) {
                                    Filter filter = mTextTypingCustomAdapter.getFilter();

                                    if (filter != null) {
                                        filter.filter(s);

                                        return true;
                                    }

                                    return false;
                                }
                            });
                            mSearchView.setVisibility(View.VISIBLE);
                            mSearchView.clearFocus();
                        }
Steven Rõgrê
  • 165
  • 1
  • 13

0 Answers0