Я реализовал механизм поиска в своем приложении так, что при фильтрации по именам в списке он выделяет совпадающие имена, и проблема заключается только в том, что он выделяет только строчные буквы и не выделяет слова, которыенаходятся в верхнем регистре или сопровождаются заглавными буквами.
Вот мой код для выделения искомых символов:
if(! searchText.isEmpty()) {
if(guest.getGuestFirstName().contains(searchText)){
int startPos = guest.getGuestFirstName().indexOf(searchText.toLowerCase(Locale.US));
int endPos = startPos + searchText.length();
if (startPos != -1) // This should always be true, just a sanity check
{
Spannable spannable = new SpannableString(guest.getGuestFirstName());
Typeface firstNameFont = Typeface.createFromAsset(context.getAssets(), "fonts/Graphik-Semibold.otf");
spannable.setSpan(new CustomTypefaceSpan("", firstNameFont), startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
guestFirstName.setText(spannable);
}
} else {
Objects.requireNonNull(guestFirstName).setText(guest.getGuestFirstName());
}
Теперь, если я ищу «an», будет выделяться «an»символы в «angela heely», но если я буду искать «An», он не будет выделять какие-либо символы вообще или наоборот, скажем, если «Angela Heely» начинается с заглавной буквы, а я ищу с «an», это не будетвыделите «An». Это может быть что-то простое, что я пропускаю, но любая помощь или идеи будут полезны, чтобы сделать нечувствительным к регистру выделение искомого текста.
Открыт для любых выражений регулярных выражений. Прямо сейчас строка searchtext, возвращает то, что пользователь искал независимо от регистра. сказать "ангела", "ан" и т. д.
спасибо !!