android AutoCompleteTextView 保存历史记录

测试的代码例子   可优化
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>

猜你喜欢

转载自blog.csdn.net/u013323758/article/details/47128455
今日推荐