您的位置:首页 > 移动开发 > Android开发

android AutoCompleteTextView 保存历史记录

2015-07-29 15:21 543 查看
测试的代码例子 可优化

class 类中的写法

=========================================

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

Intent intent=new Intent(TestActivity.this,ceshi.class);

startActivity(intent);

}
});
}

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

}

}

xml 文件

=========================================

<?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>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: