package com.vgrec.espressoexamples.activities; import android.app.SearchManager; import android.content.Intent; import android.os.Bundle; import android.provider.SearchRecentSuggestions; import android.support.v7.app.ActionBarActivity; import android.widget.ArrayAdapter; import android.widget.ListView; import com.vgrec.espressoexamples.Database; import com.vgrec.espressoexamples.R; import com.vgrec.espressoexamples.provider.AppRecentSearchesProvider; import java.util.ArrayList; import java.util.List; public class SearchableActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_searchable); ListView listView = (ListView) findViewById(R.id.list); listView.setEmptyView(findViewById(R.id.empty_view)); Intent intent = getIntent(); if (Intent.ACTION_SEARCH.equals(intent.getAction())) { String query = intent.getStringExtra(SearchManager.QUERY); List<String> results = search(query); listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, results)); saveRecentQuery(query); } } private void saveRecentQuery(String query) { SearchRecentSuggestions suggestions = new SearchRecentSuggestions( this, AppRecentSearchesProvider.AUTHORITY, AppRecentSearchesProvider.MODE); suggestions.saveRecentQuery(query, null); } private List<String> search(String query) { List<String> results = new ArrayList<>(); for (String record : Database.CITIES) { if (record.toLowerCase().startsWith(query.toLowerCase())) { results.add(record); } } return results; } }