android 实现 搜索保存历史记录功能

大家应该做这个功能 首先想到的是用AutoCompleteTextView 这个控件非常好用 ,而且代码写起来也是非常简单 而且还是自动匹配提示

android 实现 搜索保存历史记录功能_第1张图片

具体实现方法:

代码实现:





public class MainActivity extends Activity {
private AutoCompleteTextView autotext;
private ArrayAdapter arrayAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);


        autotext =(AutoCompleteTextView) findViewById(R.id.autotext);
        String [] arr={"aa","aab","aac"};
        arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,arr);
        autotext.setAdapter(arrayAdapter);
    }

}




这样就可以实现简单的 搜索历史匹配 我们要做的 其实就是缓存输入的内容到 本地 下面就是实现保存 搜索内容到本地 和 清空本地历史的 方法


//保存搜索内容到本地 
public void save() {
    String text = mKeywordEt.getText().toString();
    String oldText = mSharePreference.getString(SEARCH_HISTORY, "");
    StringBuilder builder = new StringBuilder(text);
    builder.append("," + oldText);
    if (!TextUtils.isEmpty(text) && !oldText.contains(text + ",")) {
        SharedPreferences.Editor myEditor = mSharePreference.edit();
        myEditor.putString(SEARCH_HISTORY, builder.toString());
        myEditor.commit();
    }
    updateData();
}


//清空本地历史
public void cleanHistory() {
    SharedPreferences.Editor editor = mSharePreference.edit();
    editor.clear();
    editor.commit();
    updateData();
    mSearchHistoryLl.setVisibility(View.GONE);
    SingleToast.show(this, getString(R.string.clear_history_success), Toast.LENGTH_SHORT);
}



Ps:AutoCompleteTextView 还有一个小问题  默认是从第二个字符开始匹配的 
如果设置输入第一个字符就进行提示 加入下面这行代码autotext.setThreshold(1); 
上面大概介绍了一下AutoCompleteTextView这个控件。但是我们的项目要做的是 显示出所有搜索的历史记录 效果图是这样的


android 实现 搜索保存历史记录功能_第2张图片




想了一下 用 AutoCompleteTextView 不太合适  决定自己用listView 实现  话不多说 直接上代码
下拉弹出layout布局

        
        
        
        


之前的这个demo里面少了share  commit的操作,导致会有搜索记录没有去重的问题,已经更新。附上新的源码下载地址  源码demo  ,同时谢谢ysc123shift同学的善意提醒!做技术互相帮助和分享很重要。谢谢!



效果图就是上面的图片。希望能帮到大家。 欢迎大家加入我的qq 群: 454430053。

你可能感兴趣的:(【Android开发基础】,【Android开发布局】)