EditText智能搜索点亮ListView中的被查找字符

本文介绍如何在EditText输入过程中动态查找并高亮显示ListView中的匹配字符,包括ListView样式设计、适配器实现及查找算法。通过监听EditText的文本变化,实时更新ListView显示效果。


开发中遇到需求,需要在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);
			}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值