3

I tried to using following ways but unable to show recent search history

Create "history" to SearchView on ActionBar

Implementing SearchView in action bar

kindly help how to create and show recent search in serachview searchable xml

Community
  • 1
  • 1
SATHISH RA
  • 131
  • 3
  • 9

2 Answers2

1

I got the solution

  1. create an xml file called searchable.xml (in res/xml)

     <?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="your packagename.MySuggestionProvider"
     android:searchSuggestSelection=" ?" >
     </searchable>
    
  2. create a content provider class that extends SearchRecentSuggestionsProvider :

     public class MySuggestionProvider extends SearchRecentSuggestionsProvider {
    
     public final static String AUTHORITY = "your package name.MySuggestionProvider";
     public final static int MODE = DATABASE_MODE_QUERIES;
    
     public MySuggestionProvider() {
         setupSuggestions(AUTHORITY, MODE);
     }
    }
    
  3. in your activity's class onCreate method

     handleSearch(getIntent());
    
  4. override this method:

     @Override
     protected void onNewIntent(Intent intent) {
        setIntent(intent);
    
        handleSearch(intent);
     }
    
     public void handleSearch( Intent intent)
     {
         if (Intent.ACTION_SEARCH.equalsIgnoreCase(intent.getAction())) {
             String query = intent.getStringExtra(SearchManager.QUERY);
    
         mtToolbar.setTitle(query);
    
             SearchRecentSuggestions searchRecentSuggestions=new SearchRecentSuggestions(this,
                     MySuggestionProvider.AUTHORITY,MySuggestionProvider.MODE);
    
             searchRecentSuggestions.saveRecentQuery(query,null);
         }
     }
    
  5. in the menu

     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
    
         getMenuInflater().inflate(R.menu.menu,menu);
    
         SearchManager searchManager=(SearchManager)getSystemService(Context.SEARCH_SERVICE);
    
         SearchView searchView;
    
         MenuItem menuItem=menu.findItem(R.id.action_search);
    
         if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
         {
             searchView=(SearchView)menuItem.getActionView();
         }
         else
         {
             searchView=(SearchView)MenuItemCompat.getActionView(menuItem);
         }
    
         searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
         searchView.setQueryHint(getResources().getString(R.string.search_hint));
    
         return super.onCreateOptionsMenu(menu);
    
     }
    
A P
  • 2,131
  • 2
  • 24
  • 36
SATHISH RA
  • 131
  • 3
  • 9
0

These are step i am using

 Searchable xml file 

  <?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="example.com.cle.MySuggestionProvider"
    android:searchSuggestSelection=" ?"
    >
</searchable>




Provider 


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


Activity in manifiest

 <activity
            android:name=".BaseActivity"
            android:configChanges="orientation|screenSize|keyboardHidden"
            android:theme="@style/AppTheme.ActionBar">


            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>


            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />


Activity class

  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        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);


        }
    }


Content provider class 

public final static String AUTHORITY ="example.com.cle.MySuggestionProvider";
    public final static int MODE = DATABASE_MODE_QUERIES;

    public MySuggestionProvider() {
        setupSuggestions(AUTHORITY, MODE);
    }
SATHISH RA
  • 131
  • 3
  • 9