Android实现自动匹配关键字并且标红功能
发布时间 - 2026-01-11 01:05:16 点击率:次本文实例为大家分享了Android匹配关键字标红的具体代码,供大家参考,具体内容如下

1. 单关键字匹配
若只需匹配 搜索内容 可以写的简单一些,代码如下:
if (name != null && name.contains(mKeyWord)) {
int index = name.indexOf(mKeyWord);
int len = mKeyWord.length();
Spanned temp = Html.fromHtml(name.substring(0, index)
+ "<font color=#FF0000>"
+ name.substring(index, index + len) + "</font>"
+ name.substring(index + len, name.length()));
holder.tv_name.setText(temp);
} else {
holder.tv_name.setText(name);
}
上面的name是你要显示整个item内容, mKeyWord 是搜索的关键字 holder.tv_name 是当前textview控件
2.多关键字匹配
有的时候我们做搜索的时候 是需要将用户输入的关键字在服务端做拆分,拆分为多个关键字去搜索。那么服务端返回数据的时候关键字被拆分为多个。也就是返回的是一个关键字数组。
这种情况我们在客户端做 关键字匹配的时候就要写一个算法,将段落中的多个关键字全部匹配并且标出来。
代码如下:
adapter里面逻辑:
/**
name 是item显示内容 当前item显示字符串内容
keyList 是指存放 多个关键字的list集合
*/
StringBuffer str = new StringBuffer("");
str = Utils.addChild(name, keyList, str);
holder.contentTv.setText(Html.fromHtml(str.toString()));
/**
* 多关键字查询表红,避免后面的关键字成为特殊的HTML语言代码
* @param str 检索结果
* @param inputs 关键字集合
* @param resStr 表红后的结果
*/
public static StringBuffer addChild(String str,List<String> inputs,StringBuffer resStr){
int index=str.length();//用来做为标识,判断关键字的下标
String next="";//保存str中最先找到的关键字
for (int i = inputs.size() -1 ; i>= 0;i--) {
String theNext=inputs.get(i);
int theIndex=str.indexOf(theNext);
if(theIndex==-1){//过滤掉无效关键字
inputs.remove(i);
}else if(theIndex<index){
index=theIndex;//替换下标
next=theNext;
}
}
//如果条件成立,表示串中已经没有可以被替换的关键字,否则递归处理
if(index==str.length()){
resStr.append(str);
}else{
resStr.append(str.substring(0,index));
resStr.append("<font color='#FF0000'>"+str.substring(index,index+next.length())+"</font>");
String str1=str.substring(index+next.length(),str.length());
addChild(str1,inputs,resStr);//剩余的字符串继续替换
}
return resStr;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android匹配关键字标红
# Android单关键字匹配
# Android多关键字匹配
# Android Java实现余弦匹配算法示例代码
# Android 蓝牙自动匹配PIN码跳过用户交互示例
# Android实现动态自动匹配输入内容功能
# Android 搜索结果匹配关键字且高亮显示功能
# Android文字匹配度算法及实际应用示例
# 多个
# 递归
# 服务端
# 的是
# 你要
# 是指
# 只需
# 这种情况
# 大家分享
# 具体内容
# 大家多多
# 要写
# 客户端
# 过滤掉
# length
# Spanned
# len
# indexOf
# index
# lt
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
BootStrap整体框架之基础布局组件
进行网站优化必须要坚持的四大原则
html5的keygen标签为什么废弃_替代方案说明【解答】
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
Java遍历集合的三种方式
如何快速搭建高效可靠的建站解决方案?
如何在万网自助建站平台快速创建网站?
如何用美橙互联一键搭建多站合一网站?
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel如何配置Horizon来管理队列?(安装和使用)
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
如何快速搭建高效简练网站?
JS碰撞运动实现方法详解
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Laravel怎么上传文件_Laravel图片上传及存储配置
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
如何实现建站之星域名转发设置?
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
JavaScript如何实现类型判断_typeof和instanceof有什么区别
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
动图在线制作网站有哪些,滑动动图图集怎么做?
网站图片在线制作软件,怎么在图片上做链接?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
如何获取免费开源的自助建站系统源码?
*服务器网站为何频现安全漏洞?
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
如何用JavaScript实现文本编辑器_光标和选区怎么处理
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
实现点击下箭头变上箭头来回切换的两种方法【推荐】
桂林网站制作公司有哪些,桂林马拉松怎么报名?
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
如何用西部建站助手快速创建专业网站?

