O código no qual estou trabalhando está usando a Toolbar
e inflando a menu
.
Aqui está o código
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 ()
{
..........
}
}
Mas agora, eles exigem um Search
botão no tool_bar
. Consegui colocar, segui um guia aqui.
Quando tento escrever algo para pesquisar, o brinde que fiz para testar o listener
nunca mostrado. o que indica que listener
não está funcionando
@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;
}
import android.support.v7.widget.SearchView
androidx.appcompat.widget.SearchView
Se você deseja configurar o recurso de pesquisa dentro do seu
Fragment
, basta adicionar estas poucas linhas:Etapa 1 - adicione o campo de pesquisa para você
toolbar
:Etapa 2 - adicione a lógica ao seu
onCreateOptionsMenu()
fonte
R.menu.main
?Se você deseja adicioná-lo diretamente na barra de ferramentas.
fonte
android.support.v7.widget.SearchView
no XML.implementation 'com.android.support:design:$latest_version'
Integrando o SearchView ao RecyclerView
1) Adicionar item de pesquisa no menu
SearchView
pode ser adicionado comoactionView
no menu usando2) Implemente SearchView.OnQueryTextListener em sua atividade
SearchView.OnQueryTextListener
tem dois métodos abstratos. Portanto, seu esqueleto de atividade ficaria assim depois de implementar o ouvinte de texto do SearchView.3) Configure o texto do SerchView Hint, o ouvinte etc.
4) Implemente SearchView.OnQueryTextListener
É assim que você pode implementar métodos abstratos do ouvinte.
5) Escreva um método de filtro no seu adaptador RecyclerView.
Você pode criar sua própria lógica com base em seus requisitos. Aqui está o trecho de código de exemplo para mostrar a lista de Nome que contém o texto digitado no
SearchView
.Pode ser encontrada uma amostra completa do código de funcionamento> AQUI
Você também pode verificar o código no SearchView com um banco de dados SQLite neste aplicativo de música
fonte
Implementando o SearchView sem o uso do
menu.xml
arquivo e aberto através do botãoNo seu caso
Activity
, precisamos usar o método doonCreateOptionsMenu
método no qual inflaremos programaticamente oSearchView
E na sua classe Atividade, você pode abrir o
SearchView
botão em qualquer botão, na barra de ferramentas, como abaixofonte