开发中遇到需求,需要在EditText查找的过程中,动态查找ListView中的数据,并且直接点亮其中的所包含查找的字符。想要达到的效果如图:
想要达到上图所示效果,分为两步:
第一步 设计ListView的显示样式,以及填充ListView的adapter.这个在这个地方就不介绍了。
第二步 监听EditText.addTextChangedListener(new TextWatcher())方法,重写其中的onTextChanged
第三步 在adapter里面获得当前输入的查询字符在当前字符串中的起始位置,通过SpannableStringBuilder点亮字符,将listview返回当前界面UI。主要代码如下所示:
SpannableStringBuilder style=new SpannableStringBuilder(content);
int begin=content.indexOf(searchText);
System.out.println("begin------>"+begin);
if(begin>=0){
int last=begin+searchText.length();
style.setSpan(new ForegroundColorSpan(Color.rgb(255, 97, 0)),begin,last,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.isbuy_search_list_layout01_text01.setText(style);
}else{
holder.isbuy_search_list_layout01_text01.setText(content);
}
本文介绍如何在EditText输入过程中动态查找并高亮显示ListView中的匹配字符,包括ListView样式设计、适配器实现及查找算法。通过监听EditText的文本变化,实时更新ListView显示效果。
8932

被折叠的 条评论
为什么被折叠?



