Создайте «историю» для SearchView на ActionBar

Я хочу иметь историю в своем SearchView, я искал ее, и единственный разумный (?) Учебник, который я нашел, был таким , но это просто как Gingerbread, а не API> 14.

Затем я нашел этот код:

String[] columnNames = {"_id","text"}; MatrixCursor cursor = new MatrixCursor(columnNames); String[] array = {"Snääälla", "bla bla bla", "Jävla piss"}; //if strings are in resources String[] temp = new String[2]; int id = 0; for(String item : array){ temp[0] = Integer.toString(id++); temp[1] = item; cursor.addRow(temp); } String[] from = {"text"}; int[] to = {android.R.id.text1}; CursorAdapter ad = new SimpleCursorAdapter(this.getActivity(), android.R.layout.simple_list_item_1, cursor, from, to); mSearchView.setSuggestionsAdapter(ad); 

И этот код работает только наполовину, так как он не показывает результаты из того, что вы уже написали, он показывает все элементы.

Я просто хочу, чтобы это выглядело так:

Скриншот Google Play Store

Это мой текущий код для добавления SearchView:

Рез / меню / menu.xml:

 <item android:id="@+id/fragment_searchmenuitem" android:icon="@drawable/ic_search_white" android:title="@string/menu_search" android:showAsAction="collapseActionView|ifRoom" android:actionViewClass="android.widget.SearchView" /> 

MainActivity.java:

 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { if(!mDrawerLayout.isDrawerOpen(mDrawerList)) { inflater.inflate(R.menu.fragment_search, menu); mMenuItem = menu.findItem(R.id.fragment_searchmenuitem); mSearchView = (SearchView) mMenuItem.getActionView(); mMenuItem.expandActionView(); mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) { mMenuItem.collapseActionView(); searchSupport.SearchForLyrics(s); actionBar.setSubtitle("Searcing for: " + s); return true; } @Override public boolean onQueryTextChange(String s) { return false; } }); } super.onCreateOptionsMenu(menu, inflater); } 

Может кто-то, пожалуйста, просто дайте мне что-то для начала, если честно, я не знаю, с чего начать. Таким образом, любая помощь будет действительно оценена.

На этой странице рассказывается о том, как вы можете использовать историю для SearchView.

http://developer.android.com/guide/topics/search/adding-recent-query-suggestions.html

Во-первых, вам необходимо создать поставщика контента:

 public class MySuggestionProvider extends SearchRecentSuggestionsProvider { public final static String AUTHORITY = "com.example.MySuggestionProvider"; public final static int MODE = DATABASE_MODE_QUERIES; public MySuggestionProvider() { setupSuggestions(AUTHORITY, MODE); } } 

Затем объявите поставщика контента в своем манифесте приложения следующим образом:

 <application> <provider android:name=".MySuggestionProvider" android:authorities="com.example.MySuggestionProvider" /> ... </application> 

Затем добавьте поставщика контента в свои поисковые конфигурации следующим образом:

 <?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/app_label" android:hint="@string/search_hint" android:searchSuggestAuthority="com.example.MySuggestionProvider" android:searchSuggestSelection=" ?" > </searchable> 

Вы можете вызвать saveRecentQuery () для сохранения запросов в любое время. Вот как вы можете это сделать в методе onCreate для своей деятельности:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = getIntent(); if (Intent.ACTION_SEARCH.equals(intent.getAction())) { String query = intent.getStringExtra(SearchManager.QUERY); SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this, MySuggestionProvider.AUTHORITY, MySuggestionProvider.MODE); suggestions.saveRecentQuery(query, null); } } 

Чтобы очистить историю поиска, вам просто нужно вызвать метод SearchRecentSuggestions clearHistory () следующим образом:

 SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this, HelloSuggestionProvider.AUTHORITY, HelloSuggestionProvider.MODE); suggestions.clearHistory();