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()一起使用,以在文本视图中显示它。