Java 如何在android studio中的文本侦听器上突出显示过滤列表视图中的文本?
我已经通过各种链接,其中突出显示文本视图,但我需要它的列表 我的搜索方法:Java 如何在android studio中的文本侦听器上突出显示过滤列表视图中的文本?,java,android,listview,addtextchangedlistener,Java,Android,Listview,Addtextchangedlistener,我已经通过各种链接,其中突出显示文本视图,但我需要它的列表 我的搜索方法: public void addTextListener() { inputSearchMain.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { } public void beforeTextChanged
public void addTextListener() {
inputSearchMain.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence query, int start, int before, int count) {
query = query.toString().toLowerCase();
final ArrayList<CategoryModel.CategoryList> filteredList = new ArrayList<CategoryModel.CategoryList>();
for (int i = 0; i < result_Category.size(); i++) {
final String text = result_Category.get(i).getCategory_name().toLowerCase();
if (text.contains(query)) {
//if(text.startsWith(query)
filteredList.add(result_Category.get(i));
}
}
mainRecyclerView.setLayoutManager(new LinearLayoutManager(CardViewActivity.this));
mainAdapter = new RecyclerViewAdapterMain(filteredList);
mainRecyclerView.setAdapter(mainAdapter);
mainAdapter.notifyDataSetChanged(); // data set changed
}
});
}
public void addTextListener(){
inputSearchMain.addTextChangedListener(新的TextWatcher(){
公共无效后文本已更改(可编辑){
}
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
public void onTextChanged(CharSequence查询、int start、int before、int count){
query=query.toString().toLowerCase();
最终ArrayList filteredList=新ArrayList();
对于(int i=0;i
如何使用以下代码突出显示列表中的文本
我要使用的代码:
public static CharSequence highlight(String search, String originalText) {
String normalizedText = Normalizer.normalize(originalText, Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "").toLowerCase();
int start = normalizedText.indexOf(search);
if (start <= 0) {
return originalText;
} else {
Spannable highlighted = new SpannableString(originalText);
while (start > 0) {
int spanStart = Math.min(start, originalText.length());
int spanEnd = Math.min(start + search.length(), originalText.length());
highlighted.setSpan(new BackgroundColorSpan(Color.YELLOW), spanStart, spanEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
start = normalizedText.indexOf(search, spanEnd);
}
return highlighted;
}
}
publicstaticcharsequence突出显示(字符串搜索、字符串原始文本){
字符串normalizedText=Normalizer.normalize(originalText,Normalizer.Form.NFD).replaceAll(\\p{incombindingDiacriticalMarks}+,“”)。toLowerCase();
int start=normalizedText.indexOf(搜索);
如果(从0开始){
int spanStart=Math.min(start,originalText.length());
int spanEnd=Math.min(start+search.length(),originalText.length());
突出显示.setSpan(新背景色SPAN(颜色.黄色)、SPAN开始、SPAN结束、SPAN可启用.SPAN_独占性SPAN_独占性);
开始=normalizedText.indexOf(搜索,结束);
}
返回突出显示;
}
}
放入您的RecycleServiceAdapterMain实现。我认为您必须以html字符串的形式从highlight方法返回字符串。将此字符串与html.fromHtml()一起使用要在文本视图中显示它,请放入RecycleServiceAdapterMain实现。我认为您必须以html字符串的形式从highlight方法返回字符串。将此字符串与html.fromHtml()一起使用,以在文本视图中显示它。