下面列出了android.support.v7.widget.SearchView#setSuggestionsAdapter ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/** Create menu from XML
*/
@TargetApi(Build.VERSION_CODES.FROYO)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
mMenu = menu;
/* Note: on Android 3.0+ with an action bar this method
* is called while the view is created. This can happen
* any time after onCreate.
*/
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.media_library, menu);
if (AndroidUtil.isFroyoOrLater()) {
SearchManager searchManager =
(SearchManager) VLCApplication.getAppContext().getSystemService(Context.SEARCH_SERVICE);
mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.ml_menu_search));
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setQueryHint(getString(R.string.search_hint));
SearchSuggestionsAdapter searchSuggestionsAdapter = new SearchSuggestionsAdapter(this, null);
searchSuggestionsAdapter.setFilterQueryProvider(this);
mSearchView.setSuggestionsAdapter(searchSuggestionsAdapter);
} else
menu.findItem(R.id.ml_menu_search).setVisible(false);
return super.onCreateOptionsMenu(menu);
}
/**
* Show user search whisperer with generated suggestions.
*
* @param query actual search query
* @param searchView corresponding search action view.
*/
private void showSearchSuggestions(String query, SearchView searchView) {
if (searchSuggestionsAdapter != null && searchSuggestionsList != null) {
Timber.d("Populate search adapter - mySuggestions.size(): %d", searchSuggestionsList.size());
final MatrixCursor c = new MatrixCursor(new String[]{BaseColumns._ID, "categories"});
for (int i = 0; i < searchSuggestionsList.size(); i++) {
if (searchSuggestionsList.get(i) != null && searchSuggestionsList.get(i).toLowerCase().startsWith(query.toLowerCase()))
c.addRow(new Object[]{i, searchSuggestionsList.get(i)});
}
searchView.setSuggestionsAdapter(searchSuggestionsAdapter);
searchSuggestionsAdapter.changeCursor(c);
} else {
Timber.e("Search adapter is null or search data suggestions missing");
}
}
/**
* Initialize the contents of the Activity's standard options menu.
* This is only called once, the first time the options menu is displayed.
*
* @param menu the options menu in which we place our items.
* @return You must return true for the menu to be displayed; if you return false it will not be shown.
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
searchViewItem = menu.findItem(R.id.search);
searchView = (SearchView) MenuItemCompat.getActionView(searchViewItem);
searchView.setQueryHint(getResources().getString(R.string.search_hint));
searchView.setOnQueryTextListener(searchViewOnQueryTextListener);
searchView.setOnSuggestionListener(searchSuggestionListener);
// Associate searchable configuration with the SearchView
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchViewItemC =
(SearchView) menu.findItem(R.id.search).getActionView();
searchViewItemC.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
String[] from = {SearchManager.SUGGEST_COLUMN_ICON_1, SearchManager.SUGGEST_COLUMN_TEXT_1, SearchManager.SUGGEST_COLUMN_TEXT_2};
int[] to = {R.id.posterPath, R.id.title, R.id.info};
searchAdapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.suggestionrow, null, from, to, 0) {
@Override
public void changeCursor(Cursor cursor) {
super.swapCursor(cursor);
}
};
searchViewItemC.setSuggestionsAdapter(searchAdapter);
MenuItemCompat.setOnActionExpandListener(searchViewItem, onSearchViewItemExpand);
return true;
}
public boolean executeSearchOnMap(String query) {
final SearchView searchView = (SearchView) searchMenuItem.getActionView();
searchView.setSuggestionsAdapter(null);
PagerResultsFragment pagerResultsFragment = PagerResultsFragment.newInstance(this);
getSupportFragmentManager().beginTransaction()
.replace(R.id.pager_results_container, pagerResultsFragment,
PagerResultsFragment.TAG)
.commit();
return pagerResultsFragment.executeSearchOnMap(getSearchView(), query);
}