我试图在recycleView列表中突出显示查询的文本。 我的要求是忽略空格并突出显示文本。
我的列表:[“ Robert De Niro”,“ Jack Nicholson”,“ Marlon Brando”]
搜索查询: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);
}
答案 0 :(得分:0)
只需在检查前从搜索字符串中删除空格
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);
}