Android:控件AutoCompleteTextView 客户端保存搜索历史自动提示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" > <AutoCompleteTextView
android:id="@+id/auto"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:completionHint="最近5条记录"
android:completionThreshold="1"
/> <Button
android:id="@+id/search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" > <Button
android:id="@+id/clean"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="清除历史记录"
android:onClick="cleanHistory"
/>
</LinearLayout> </LinearLayout>
public class TestActivity extends Activity {
private AutoCompleteTextView auto;
private Button searchbtn;
private ArrayAdapter<String> arr_adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
// 初始化
auto = (AutoCompleteTextView) findViewById(R.id.auto);
searchbtn = (Button) findViewById(R.id.search);
// 获取搜索记录文件内容
SharedPreferences sp = getSharedPreferences("search_history", 0);
String history = sp.getString("history", "暂时没有搜索记录");
// 用逗号分割内容返回数组
String[] history_arr = history.split(",");
// 新建适配器,适配器数据为搜索历史文件内容
arr_adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, history_arr);
// 保留前50条数据
if (history_arr.length > 50) {
String[] newArrays = new String[50];
// 实现数组之间的复制
System.arraycopy(history_arr, 0, newArrays, 0, 50);
arr_adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, history_arr);
}
// 设置适配器
auto.setAdapter(arr_adapter);
// 设置监听事件,点击搜索写入搜索词
searchbtn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
save();
}
});
}
public void save() {
// 获取搜索框信息
String text = auto.getText().toString();
SharedPreferences mysp = getSharedPreferences("search_history", 0);
String old_text = mysp.getString("history", "暂时没有搜索记录");
// 利用StringBuilder.append新增内容,逗号便于读取内容时用逗号拆分开
StringBuilder builder = new StringBuilder(old_text);
builder.append(text + ",");
// 判断搜索内容是否已经存在于历史文件,已存在则不重复添加
if (!old_text.contains(text + ",")) {
SharedPreferences.Editor myeditor = mysp.edit();
myeditor.putString("history", builder.toString());
myeditor.commit();
Toast.makeText(this, text + "添加成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, text + "已存在", Toast.LENGTH_SHORT).show();
}
}
//清除搜索记录
public void cleanHistory(View v){
SharedPreferences sp =getSharedPreferences("search_history",0);
SharedPreferences.Editor editor=sp.edit();
editor.clear();
editor.commit();
Toast.makeText(this, "清除成功", Toast.LENGTH_SHORT).show();
super.onDestroy();
}
}
相关文章:
Android:控件AutoCompleteTextView 客户端保存搜索历史自动提示的更多相关文章
- Android——控件AutoCompleteTextView 自动提示
Android:控件AutoCompleteTextView 自动提示 在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,这种效果在Android中是用AutoCompleteTextV ...
- Android 控件 -------- AutoCompleteTextView 动态匹配内容,例如 百度搜索提示下拉列表功能
AutoCompleteTextView 支持基本的自动完成功能,适用在各种搜索功能中,并且可以根据自己的需求设置他的默认显示数据.两个控件都可以很灵活的预置匹配的那些数据,并且可以设置输入多少值时开 ...
- Android控件——AutoCompleteTextView与MultiAutoCompleteTextView(实现自动匹配输入的内容)
------------------------------------AutoCompleteTextView----------------------
- Android AutoCompleteTextView控件实现类似百度搜索提示,限制输入数字长度
Android AutoCompleteTextView 控件实现类似被搜索提示,效果如下 1.首先贴出布局代码 activity_main.xml: <?xml version="1 ...
- 一步一步学android控件(之六) —— MultiAutoCompleteTextView
今天学习的控件是MultiAutoCompleteTextView . 提到MultiAutoCompleteTextView 我们就自然而然地想到AutoCompleteTextView ,就想知道 ...
- 从Android系统出发,分析Android控件构架
从Android系统出发,分析Android控件构架 Android中所有的控件追溯到根源,就是View 和ViewGroup,相信这个大家都知道,但是大家也许会不太清楚它们之间的具体关系是什么,在A ...
- android控件的属性
android控件的属性 本节描述android空间的位置,内容等相关属性及属性的含义 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 ( ...
- Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)
本人之前以前撰文描写叙述Appium和UIAutomator框架是怎样定位Android界面上的控件的. UIAutomator定位Android控件的方法实践和建议 Appium基于安卓的各种Fin ...
- Robotium之Android控件定位实践和建议
本人之前曾经撰文描述Appium和UIAutomator框架是如何定位Android界面上的控件的. UIAutomator定位Android控件的方法实践和建议Appium基于安卓的各种FindEl ...
随机推荐
- 一款jQuery仿海尔官网全屏焦点图特效代码
一款jQuery仿海尔官网全屏焦点图特效代码,带有左右箭头的jQuery焦点图切换特效. 当焦点图切换时,下方的三块小图也相对应的进行切换.并且特效还兼容头疼的IE6.赶快去和谐了它吧! 适用浏览器: ...
- 通过 Javacore 了解线程运行状况
Javacore 是一个当前 JVM 运行状态的快照.通过对Javacore 的分析,可以了解在 JVM 中运行的应用程序的当前状态,比如是否“卡”在某一点上,或在某些代码上运行时间太长. Javac ...
- STM32 ucosii 串口接收数据 遇到的问题及解决思路
写一个程序,用到了ucos ii ,串口在中断中接收数据(一包数据 8个字节 包含: 1byte包头 5byte数据 1byte校验和 1byte 包尾 ) ,数据由上位机每隔500ms发送一次,在串 ...
- 含有自增序列的表中使用truncate与delete的不同结果
一个含有自增序列的表,使用delete跟truncate之后会有什么不同结果呢? 大概说一下,使用truncate,表中的记录全部被清除,如果向表中插入数据,那么数据的排序是从1开始的. 如果使用的是 ...
- Java eclipse export jar包 包括第三方引入的jar
1.安装fatjar插件 2.export jar 说明:安装后,操作说明以官网为准,不同的版本会有不同的右键菜单,我的版本(Eclipse Java EE IDE for Web Developer ...
- JPA学习---第五节:日期和枚举等字段类型的JPA映射
1.在上一节可在数据库中看到创建出来的表和字段,是通过 Entity bean 来创建的,而创建表名和字段名的规则是怎样的? 有类,代码如下: package learn.jpa.bean; impo ...
- .NET核心代码保护策略-隐藏核心程序集
经过之前那个道德指责风波过后也有一段时间没写博客了,当然不是我心怀内疚才这么久不写,纯粹是程序员的通病..怎一个懒字了得,本来想写一些长篇大论反讽一下那些道德高人的.想想还是算了,那样估计会引来新一波 ...
- Java 执行 SQL 脚本文件
转自:http://blog.csdn.net/hongmin118/article/details/4588941 package com.unmi.db; import java.io.FileI ...
- struts2传map到前台出现的问题
后台打印出的错: 2016-08-16 13:42:52.652 WARN org.apache.struts2.json.JSONWriter - JavaScript doesn't s ...
- ls 排序
ls 排序 首先我们通过man 来看看 ls其中有几项; -S sort by file size : 按大小降序 --sort=WORD sort by WORD instead of na ...