键入时执行搜索

时间:2014-12-22 19:06:24

标签: android search searchview

我有一个可搜索的工作Activity,在ActionBar的{​​{1}}(在软键盘上输入“Go”)提交输入后查询远程数据库。这很好用,但每次android.support.v7.widget.SearchView的文本通过添加或删除字符更改时,我最终都会查询数据库。我的初始化代码SearchView在下面。

SearchFragment.java (上述可搜索SearchView的子片段)

Activity

我认为工作需要在上面的@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu_search, menu); // Get the searchable.xml data about the search configuration final SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE); SearchableInfo searchInfo = searchManager.getSearchableInfo(getActivity().getComponentName()); // Associate searchable configuration with the SearchView mSearchView = (SearchView) menu.findItem(R.id.menu_item_search).getActionView(); mSearchView.setSearchableInfo(searchInfo); mSearchView.requestFocus(); mSearchView.onActionViewExpanded(); getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { mSearchListAdapter.clear(); return false; } @Override public boolean onQueryTextChange(String query) { mSearchListAdapter.clear(); // Execute search ... return false; } }); } 方法中完成,但我不确定需要调用什么。我想过调用onQueryTextChange(String query)的{​​{1}}实例方法,但这似乎不是最佳做法。有没有人有类型到搜索的经验,并愿意分享有效的解决方案?

更新:

MainActivity.java (可搜索的SearchManager

startSearch

以上search interface design是Android团队在Google推荐的内容。

4 个答案:

答案 0 :(得分:2)

到目前为止,我在阅读几页文档后遇到的唯一解决方案就是使用Intent.ACTION_SEARCH操作和SearchView中的当前查询发送一个intent来启动可搜索的{只要Activity的文字发生变化,就会{1}}请记住,这可能不是SearchView设计方面的最佳做法,但它确实有效。我将在以后重新考虑这种方法,如果我遇到任何新的东西,我会在这里报告。

SearchManager

答案 1 :(得分:1)

TextWatcher应该是您正在寻找的。它还提供在文本更改之前或之后执行代码。

http://developer.android.com/reference/android/text/TextWatcher.html

 When an object of a type is attached to an Editable, its methods will be called when the text is changed.

答案 2 :(得分:0)

这是您正在寻找的问题的完美解决方案。

看到这个会对你有所帮助...... Android Action Bar SearchView as Autocomplete?

答案 3 :(得分:0)

如果您仍在寻找更好的解决方案: 我刚刚找到this回答类似问题,该问题使用

searchView.setOnQueryTextListener(this);

这正是你想要的。