выделите запрашиваемый текст в списке recycleView, игнорируя пробел - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь выделить запрашиваемый текст в списке recycleView. Мое требование - игнорировать пробел и выделять текст.

Мой список : ["Роберт Де Ниро", "Джек Николсон", "Марлон Брандо"]

Поисковый запрос : DeNiro

Ожидается : Роберт De N iro

Ниже мой код

  private Spannable getHighlightedText(String wholeText, String searchText) {

    if (searchText != null && wholeText.toLowerCase().contains(searchText.toLowerCase())) {
        int startPos = wholeText.toLowerCase().indexOf(searchText.toLowerCase());
        int endPos = startPos + searchText.length();

        Spannable spanString = Spannable.Factory.getInstance().newSpannable(wholeText);
        spanString.setSpan(new ForegroundColorSpan(getContext().getResources().getColor(R.color.primary)), startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        return spanString;
    }

    return new SpannableString(wholeText);
}

1 Ответ

0 голосов
/ 05 ноября 2019

просто удалите пробел из строки поиска перед проверкой

searchText= searchText.trim().replace(" ", "");

Ваша функция будет такой

private Spannable getHighlightedText(String wholeText, String searchText) {


  String searchTextWithOutSpace=searchText.trim().replace(" ", "");


  if (searchText != null && ( wholeText.toLowerCase().contains(searchTextWithOutSpace.toLowerCase()) ||
      //add another condition because mybae user write searchText with space  
      wholeText.toLowerCase().contains(searchText.toLowerCase())) ) {
    int startPos = wholeText.toLowerCase().indexOf(searchText.toLowerCase());
    int endPos = startPos + searchText.length();

    Spannable spanString = Spannable.Factory.getInstance().newSpannable(wholeText);
    spanString.setSpan(new ForegroundColorSpan(getContext().getResources().getColor(R.color.primary)), startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    return spanString;
  }

  return new SpannableString(wholeText);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...