There is a SearchView which displays values from the database. How to install a handler for clicking on the values that SearchView displays, for example, to switch to an Activity of this value?
Main Activity
public boolean onCreateOptionsMenu(Menu menu){ getMenuInflater().inflate(R.menu.menu_main, menu); activateSearchView(menu); return true; } private void activateSearchView(Menu menu) { MenuItem searchItem = menu.findItem(R.id.search); searchView = (SearchView) MenuItemCompat.getActionView(searchItem); final SearchManager searchManager = (SearchManager) getSystemService (Context.SEARCH_SERVICE); searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, MainActivity.class))); } Database helper
public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) { return myDataBase.query("NATURE_TABLE", null, null, null, null, null, null); } public ArrayList<String> getAllEmployeesName(){ SQLiteDatabase db = this.getReadableDatabase(); ArrayList<String> employeesNames = new ArrayList<String>(); Cursor cursor = db.query("NATURE_TABLE",null,null,null,null,null,null,null); if(cursor != null && cursor.getCount() > 0) { cursor.moveToFirst(); do{ String name = cursor.getString(1); employeesNames.add(name); }while(cursor.moveToNext()); } cursor.close(); db.close(); return employeesNames; } ProviderActivity
public class ProviderActivity extends ContentProvider { DatabaseHelper myDB; ArrayList<String> employees; @Override public boolean onCreate() { return false; } @Nullable @Override public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) { myDB = new DatabaseHelper(getContext()); String employeeName; employees = myDB.getAllEmployeesName(); MatrixCursor matrixCursor = new MatrixCursor(new String[]{ BaseColumns._ID, SearchManager.SUGGEST_COLUMN_TEXT_1, SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID }); if(employees != null){ String query = uri.getLastPathSegment().toString(); int limit = Integer.parseInt(uri.getQueryParameter (SearchManager.SUGGEST_PARAMETER_LIMIT)); int length = employees.size(); for (int i = 0; i < length && matrixCursor.getCount() < limit; i++) { String employee = employees.get(i); if(employee.contains(query)) { matrixCursor.addRow(new Object[]{i, employee, i}); } } } return matrixCursor; } @Nullable @Override public String getType(Uri uri) { return null; } @Nullable @Override public Uri insert(Uri uri, ContentValues contentValues) { return null; } @Override public int delete(Uri uri, String s, String[] strings) { return 0; } @Override public int update(Uri uri, ContentValues contentValues, String s, String[] strings) { return 0; } 