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

<?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();
} }

实例下载>>>>

相关文章:

储存方式之SharePreferences

AutoCompleteTextView 自动提示

05-11 17:28