Android搜索框存储搜索记录
来源:互联网 发布:51单片机蜂鸣器程序 编辑:程序博客网 时间:2024/05/20 03:46
1.引入
越来越多的App都用到了搜索框,公司的项目也用到了搜索框,还提出来以下需求:输入框输入文字后,按照堆栈的形式把最近搜索记录显示在列表中,点击单个搜索记录可以删除,点击清空搜索记录删除所有的搜索距离。
2.相关的代码
保存关键字代码:
// 保存关键字 private void Save(String key) { SharedPreferences sp1 = getSharedPreferences(historykey, 0); String save_Str = sp1.getString("history", ""); String[] hisArrays = save_Str.split(","); //关键字存储按时间倒序存(把数组倒序) StringBuilder sb = new StringBuilder(key); //数组倒序(始末倒序) for (int start = 0, end = hisArrays.length - 1; start < end; start++, end--) { String temp = hisArrays[end]; hisArrays[end] = hisArrays[start]; hisArrays[start] = temp; } sb.append( "," + save_Str); sp.edit().putString("history", sb.toString()).commit(); }
获取关键字代码:
// 获取历史关键字 private List<String> get() { String save_history = sp.getString("history", ""); String[] hisArrays = save_history.split(","); listhistory = new ArrayList<String>(); List<String> list = new ArrayList<String>(); for (int i = 0; i < hisArrays.length; i++) { list.add(hisArrays[i]); } //遍历, 去重(去老元素,留新元素) for(String s : list){//循环list if(!listhistory.contains(s)){ listhistory.add(s); } } return listhistory; }
删除单条搜索记录的代码:
@Override public void onItemChildClick(View view, int position) { //点击删除单条历史记录 SharedPreferences sp1 = getSharedPreferences(historykey, 0); String save_Str = sp1.getString("history", ""); String[] hisArrays = save_Str.split(","); String str = ""; StringBuilder sb = new StringBuilder(str); for (int i = 0; i < hisArrays.length; i++) { if(i !=position){ sb.append(hisArrays[i] + ","); } } sp.edit().putString("history", sb.toString()).commit(); } });**适配器中也要处理,不然刷新后列表中没有立即移除:** holder.single_close.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mOnItemClickListener.onItemChildClick(view, position); //点击删除单条历史记录 list.remove(position); if(list.size() == 0){ historyLayout.setVisibility(View.GONE); } notifyDataSetChanged(); } });
3.其中在保存关键字时用到了数组倒序(始末倒序),这一步是搜索记录倒序显示在列表上的关键
//数组倒序(始末倒序) for (int start = 0, end = hisArrays.length - 1; start < end; start++, end--) { String temp = hisArrays[end]; hisArrays[end] = hisArrays[start]; hisArrays[start] = temp; }
4.多次输入相同的关键字时要考虑将最新的一条关键字显示在第一条,同时把之前的关键字去重
//遍历, 去重(去老元素,留新元素) for(String s : list){//循环list if(!listhistory.contains(s)){ listhistory.add(s); } }
以上就是搜索框存储关键字和删除关键字的技术要点。
阅读全文
0 0
- Android搜索框存储搜索记录
- 搜索框缓存搜索记录
- android 浏览器搜索记录
- 使用sessionStorage存储搜索记录和对应的搜索结果
- Android 仿百度谷歌搜索自动提示框,将搜索记录保存数据库
- Android常用:手把手教你实现搜索框(含历史搜索记录)
- Android常用:手把手教你实现搜索框(含历史搜索记录)
- Android常用:手把手教你实现搜索框(含历史搜索记录)
- Android 流式布局 + 搜索记录,包括多数据本地存储
- 简单实现Android搜索功能 显示清除历史搜索记录
- 实现Android搜索功能 显示清除历史搜索记录
- 简单实现Android搜索功能 显示清除历史搜索记录
- android 系统搜索框(有浏览记录)
- Android 系统搜索框(有浏览记录)
- Android 系统搜索框(有浏览记录)
- Android搜索栏遇到的问题记录
- Android-AutoCompleteTextView实现历史搜索记录显示
- android 自定义搜索框 + 搜索提示
- 查询数据
- webpack实战——(4)处理项目中的资源文件
- Python Mysql:增删改查
- 使用反射机制创建万能的数据库的增删查改
- Oracle EBS Interface/API(4)--AR贷项通知单
- Android搜索框存储搜索记录
- 剑指offer---用两个栈实现队列(7)
- Leedcode 算法习题 第十一周
- php读取网络文件 curl, fsockopen ,file_get_contents 几个方法的效率对比
- STM32系统学习——USART(串口通信)
- 注册登录请求中RSA加密,PHP服务器和Android客户端实现
- CentOS 7 上安装vim(默认未安装)
- java实现定时任务的三种方法
- DevExpress控件使用API