核心逻辑方法:

/**
* 搜索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. anaconda 的安装

    进官网下载anaconda, 根据需要下载对应python版本Anaconda软件. https://www.anaconda.com/download/#windows 下载完双击 Anaconda ...

  2. 51单片机---点亮一个LED灯

    1 程序源码 #include <REGX52.H> `包含51单片机的头文件` sbit led = P0^0; int main(void) { while(1) { led = 1; ...

  3. MySql最土的语法解释使用一。

    create database namedb charset utf8;解释:创建一个数据库 namedb改成你的数据库名字,charset是字符集的意思 utf8代表数据库支持中文字符集.必须分号结 ...

  4. Ubuntu 下超简单的安装指定版本的nodejs

    第一步 指定版本源 执行 curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - setup_5.x 需要安装的版本号,替换数字就 ...

  5. linux安装mysql后root无法登录 sql 无法登录

    linux安装mysql后root无法登录 问题:[root@localhost mysql]# mysql -u root -pEnter password: ERROR 1045 (28000): ...

  6. Python练习五

    1.用文件操作的方式,创建登录注册功能,允许用户输错三次. user = input("请输入你要注册的用户名:") password = input("请输入你要注册的 ...

  7. 查看celery 队列长度

    BROKER_URL = 'redis://127.0.0.1:6379/2' quque 名称:celery 查询队列长度命令: redis-cli -n 2 llen celery 注释: -n: ...

  8. js获取世界不同时区的当前时间

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. ubuntu16.04 使用kinectv2跑Elasticfusion

    1.安装openni2 参考:https://blog.csdn.net/D206_hero/article/details/78985859?utm_source=blogxgwz3  sudo a ...

  10. collection和association的区别于关系

    比如同时有User.java和Card.java两个类 User.java如下: public class User{ private Card card_one; private List<C ...