核心逻辑方法:

  1. /**
  2. * 搜索item
  3. * @param searchContent 需要搜索的文本内容
  4. */
  5. public void searchItem(String searchContent){
  6. this.mSearchContent = searchContent.trim();//去除空格
  7. if(TextUtils.isEmpty(mSearchContent)||mSearchContent.length()==0){//如果搜索内容是空的就显示全部内容
  8. this.mShowList.clear();
  9. mShowList.addAll(mAllDataList);
  10. notifyDataSetChanged();
  11. return;
  12. }
  13. List<THealthDataListBase.StudentData> tempList = new ArrayList<>();//用于临时保存匹配完成的数据
  14. THealthDataListBase.StudentData tempStudentData = null;//用于临时保存匹配完成的item数据
  15. char[] searchContentCharArray = searchContent.toCharArray();
  16. for (THealthDataListBase.StudentData studentData : mAllDataList){ //遍历全部学生名称
  17. char[] studentNameCharArray = studentData.name.trim().toCharArray();//学生名称去除空格,并且转成数组
  18. int count = 0;
  19. for (int i=0;i<searchContentCharArray.length;i++){ //遍历搜索文字
  20. for (char word :studentNameCharArray){ //遍历学生名称文字
  21. if (word == searchContentCharArray[i]){ //判断一致的文字
  22. count++;
  23. }
  24. }
  25.  
  26. }
  27. if (count == 0){ //如果匹配度是0就不添加
  28. continue;
  29. }
  30. tempStudentData = new THealthDataListBase().new StudentData();
  31. tempStudentData.name = studentData.name;
  32. tempStudentData.studentId = studentData.studentId;
  33. tempStudentData.morning = studentData.morning;
  34. tempStudentData.noon = studentData.noon;
  35. tempStudentData.setCount(count);
  36. tempList.add(tempStudentData);
  37.  
  38. }
  39. if (tempList.isEmpty() && !mSearchContent.isEmpty()){
  40. mShowList.clear();
  41. notifyDataSetChanged();
  42. return;
  43.  
  44. }
  45. Collections.sort(tempList);//排序
  46. mShowList.clear();
  47. mShowList.addAll(tempList);
  48. notifyDataSetChanged();
  49.  
  50. }

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. linux中mysql配置文件和jdk环境变量

    mysql配置文件 [client]default-character-set = utf8mb4 [mysql]socket = /var/lib/mysql/mysql.sockdefault-c ...

  2. javascript之网页跑马灯

    ---恢复内容开始--- <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  3. 2018-2019-2 20165313 Exp3 免杀原理与实践

    实践内容(3.5分) 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧:(1.5分) 1.2 通过组合 ...

  4. 天融信防火墙NGFW4000,无法进入web管理和community属性查看

    1.system config save  //配置保存 2.system config reset //清除配置(恢复出厂设置) 3.pf service add name webui area a ...

  5. IDEA远程连接Hadoop

    IDEA远程连接Hadoop Win 1.Hadoop配置 下载并配置到本地环境 HADOOP_HOME D:\Tools\hadoop-2.7.7\hadoop-2.7.7 HADOOP_PREFI ...

  6. C++——STL内存清除

    1.vector元素的清除 看代码.在vector中添加若干元素,然后clear() #include<iostream> #include<list> #include< ...

  7. oracle错误汇总2

    http://blog.itpub.net/30430420/viewspace-1799925/ ============================= 现象!!!!!!!!!!!!!!!!!S ...

  8. c# 程序只能运行一次(多次运行只能打开同一个程序)

    转自:https://social.msdn.microsoft.com/Forums/zh-CN/6398fb10-ecc2-4c03-ab25-d03544f5fcc9/2291420309357 ...

  9. elasticsearch -- Logstash实现mysql同步数据到elasticsearch

    配置 安装插件由于这里是从mysql同步数据到elasticsearch,所以需要安装jdbc的入插件和elasticsearch的出插件:logstash-input-jdbc.logstash-o ...

  10. vs2017 F5不会自动编译了

    其实我的错误提示是:c# 不会命中断点 源代码与原始版本不同 我在网上搜索这个,发现让另存啦.格式化代码啦.批量重生成啦. 只有批量重生成好用,断点能打上,其他方法都不行. 可是每次都批量重生成太麻烦 ...