The code on which I am working, is using a Toolbar
and inflating a menu
.
Here is the code
private Toolbar mToolbar;
mToolbar.inflateMenu(R.menu.chat_screen_menu);
setupMenu ();
private void setupMenu ()
{
mMenu = mToolbar.getMenu();
if (mMenu != null)
{
if (mChatPager != null && mChatPager.getCurrentItem() > 0)
{
mMenu.setGroupVisible(R.id.menu_group_chats, true);
mMenu.setGroupVisible(R.id.menu_group_contacts, false);
}
else
{
mMenu.setGroupVisible(R.id.menu_group_chats, false);
mMenu.setGroupVisible(R.id.menu_group_contacts, true);
mMenu.setGroupVisible(R.id.menu_group_otr_verified,false);
mMenu.setGroupVisible(R.id.menu_group_otr_unverified,false);
mMenu.setGroupVisible(R.id.menu_group_otr_off,false);
}
}
mToolbar.setOnMenuItemClickListener(new OnMenuItemClickListener ()
{
..........
}
}
But now, they require a Search
button in the tool_bar
.
I managed to put it, I followed a guide here
When I try to write something to search, the toast I had put to test the listener
never shown.
which indicates listener
is not working
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.chat_screen_menu, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_menu_search));
final Toast toast = new Toast(mApp);
if (mSearchView != null )
{
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setIconifiedByDefault(false);
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener()
{
public boolean onQueryTextChange(String newText)
{
mSearchString = newText;
//doFilterAsync(mSearchString);
toast.makeText(getApplicationContext(), "Test1", Toast.LENGTH_LONG).show();
return true;
}
public boolean onQueryTextSubmit(String query)
{
mSearchString = query;
//doFilterAsync(mSearchString);
toast.makeText(getApplicationContext(), "Test2", Toast.LENGTH_LONG).show();
return true;
}
};
mSearchView.setOnQueryTextListener(queryTextListener);
}
return true;
}
If you want to add it directly in the toolbar.
Implementing the SearchView without the use of the
menu.xml
file and open through buttonIn your
Activity
we need to use the method of theonCreateOptionsMenu
method in which we will programmatically inflate theSerchview
And in your Activity class, you can open the
SearchView
on any button click on toolbar like belowIntegrating SearchView with RecyclerView
1) Add SearchView Item in Menu
SearchView
can be added asactionView
in menu using2) Implement SearchView.OnQueryTextListener in your Activity
SearchView.OnQueryTextListener
has two abstract methods. So your activity skeleton would now look like this after implementing SearchView text listener.3) Set up SerchView Hint text, listener etc
4) Implement SearchView.OnQueryTextListener
This is how you can implement abstract methods of the listener.
5) Write a filter method in your RecyclerView Adapter.
You can come up with your own logic based on your requirement. Here is the sample code snippet to show the list of Name which contains the text typed in the
SearchView
.Full working code sample can be found > HERE
You can also check out the code on SearchView with an SQLite database in this Music App
If you would like to setup the search facility inside your
Fragment
, just add these few lines:Step 1 - Add the search field to you
toolbar
:Step 2 - Add the logic to your
onCreateOptionsMenu()
You have to use
Appcompat
library for that. Which is used like below:dashboard.xml
Activity file:
manifest file:
searchable xml file:
And at last, your
SearchResultsActivity
class code. for showing result of your search.