核心逻辑方法:

/**
* 搜索item
* @param searchContent 需要搜索的文本内容
*/
public void searchItem(String searchContent){
this.mSearchContent = searchContent.trim();//去除空格
if(TextUtils.isEmpty(mSearchContent)||mSearchContent.length()==0){//如果搜索内容是空的就显示全部内容
this.mShowList.clear();
mShowList.addAll(mAllDataList);
notifyDataSetChanged();
return;
}
List<THealthDataListBase.StudentData> tempList = new ArrayList<>();//用于临时保存匹配完成的数据
THealthDataListBase.StudentData tempStudentData = null;//用于临时保存匹配完成的item数据
char[] searchContentCharArray = searchContent.toCharArray();
for (THealthDataListBase.StudentData studentData : mAllDataList){ //遍历全部学生名称
char[] studentNameCharArray = studentData.name.trim().toCharArray();//学生名称去除空格,并且转成数组
int count = 0;
for (int i=0;i<searchContentCharArray.length;i++){ //遍历搜索文字
for (char word :studentNameCharArray){ //遍历学生名称文字
if (word == searchContentCharArray[i]){ //判断一致的文字
count++;
}
} }
if (count == 0){ //如果匹配度是0就不添加
continue;
}
tempStudentData = new THealthDataListBase().new StudentData();
tempStudentData.name = studentData.name;
tempStudentData.studentId = studentData.studentId;
tempStudentData.morning = studentData.morning;
tempStudentData.noon = studentData.noon;
tempStudentData.setCount(count);
tempList.add(tempStudentData); }
if (tempList.isEmpty() && !mSearchContent.isEmpty()){
mShowList.clear();
notifyDataSetChanged();
return; }
Collections.sort(tempList);//排序
mShowList.clear();
mShowList.addAll(tempList);
notifyDataSetChanged(); }

Android 开发 实现文本搜索功能的更多相关文章

  1. Android开发:文本控件详解——TextView(一)基本属性

    一.简单实例: 新建的Android项目初始自带的Hello World!其实就是一个TextView. 在activity_main.xml中可以新建TextView,从左侧组件里拖拽到右侧预览界面 ...

  2. Android开发:文本控件详解——TextView(二)文字跑马灯效果实现

    一.需要使用的属性: 1.android:ellipsize 作用:若文字过长,控制该控件如何显示. 对于同样的文字“Android开发:文本控件详解——TextView(二)文字跑马灯效果实现”,不 ...

  3. Android开发之清除缓存功能实现方法,可以集成在自己的app中,增加一个新功能。

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 Android开发之清除缓存功能实现方法,可以集成在自己的app中,增加一个新功能. 下面是一个效果图 ...

  4. Android开发技巧——Camera拍照功能

    本篇是我对开发项目的拍照功能过程中,对Camera拍照使用的总结.由于camera2是在api level 21(5.0.1)才引入的,而Camera到6.0仍可使用,所以暂未考虑camera2. 文 ...

  5. Android开发常用的一些功能列表(转)

    文章来源:http://www.cnblogs.com/netsql/archive/2013/03/02/2939828.html 1.软件自动更新下载,并提示 2.软件登录注册,以及状态保存 3. ...

  6. android开发之微信支付功能的实现

    移动开发中,支付类的App越来越多,对于开发者来说也是不可少的,不可不会的:下面就来说一说支付开发的流程 1.申请你的AppID 请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将该 ...

  7. Android开发:文本控件详解——EditText(一)基本属性

    一.简单实例: EditText输入的文字样式部分的属性,基本都是和TextView中的属性一样. 除此之外,EditText还有自己独有的属性. 二.基本属性: hint  输入框显示的提示文本  ...

  8. android开发_文本按钮 与 输入框

    1 TextView:    属性与值 android:text="文本" android:textSize="20sp"              //sp为 ...

  9. Android开发:文本控件详解——RadioButton和CheckBox(一)基本属性

    一.RadioButton和RadioGroup: RadioButton是单个的圆形单选框,而RadioGroup是可以容纳多个RadioButton存在的容器,因此RadioButton和Radi ...

随机推荐

  1. webpack 插件库

    webpack常用的插件安装命令 webpack常用的插件安装命令:1:npm install html-webpack-plugin --save-dev //自动快速的帮我们生成HTML.2:np ...

  2. vue-----表单与组件

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name=& ...

  3. Linux下RabbitMQ的安装 开机自启动

    1.官网下载地址 下载 RabbitMQ 和 erlang.我下载的是rabbitmq-server-3.6.10-1.el7.noarch.rpm和erlang-19.0.4-1.el7.cento ...

  4. CCNet: Criss-Cross Attention for Semantic Segmentation 里的Criss-Cross Attention计算方法

    论文地址:https://arxiv.org/pdf/1811.11721v1.pdf  code address: https://github.com/speedinghzl/CCNet 相关论文 ...

  5. #Windows# Excel无法打开右键新建的spreasheet

    此问题由来已久. 原因是之前安装过wps,并且现在卸载了. 因此.xls与.xlsx这两个文件格式的新建模板的路径被改成了纸箱WPS Office模板的路径,从而导致无法Excel打开这个文件时报错 ...

  6. java8_api_misc

    属性文件处理    概念    加载并读取文件内容    修改文件内容    获取系统属性        该文件是一个文本文件,以properties作为其后缀,内容格式为    key1=value ...

  7. 16.1 解决SecureCRT的Home+End+Del不好用使用方法

    有些时候 securecrt 的快捷键 与我们使用习惯不一致时,可以自己动手修改下映射文件. SecureCRT菜单 :工具→键映射编辑器,在弹出的键盘中点击“home”,会弹出一个窗口,在“发送字符 ...

  8. Linux之正则表达式2之()、[]、{}区别

    正则表达式的() [] {} 有着不同的意思. () 是为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串 (\s*)表示连续空格的字符串 [] 是定义匹配的字符范围.比如[a-zA-Z ...

  9. jquery对append进的元素的监听操作

    通常append是再页面加载完之后才加入进去的,此时使用click方法是没有效果的,应使用document.on来实现对元素的监听. 例: $(document).on("click&quo ...

  10. RN 使用第三方字体

    Android: 程序会尝试在 assets/fonts 目录下查找字体文件,如果没找到会使用默认的字体 所以将文件放到路径下才能生效! [project root]/android/app/src/ ...