Skip to content

Instantly share code, notes, and snippets.

@EduardoSP6
Created May 28, 2021 14:44
Show Gist options
  • Save EduardoSP6/c6394b8773acc8c251df8d6f1f8c8a91 to your computer and use it in GitHub Desktop.
Save EduardoSP6/c6394b8773acc8c251df8d6f1f8c8a91 to your computer and use it in GitHub Desktop.
How to create search field in Android app
Como criar campo de pesquisa no aplicativo Android
1- Adicionar menu item na tooolbar:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always"
app:actionViewClass="androidx.appcompat.widget.SearchView"
android:title="@string/search_title"
/>
</menu>
2- Instanciar o campo. Se você vai usar na MainActivity faça isso no metodo onOptionsItemSelected().
Mas se for usar em um fragment faça no metodo onCreateView() conforme exemplo abaixo:
// Campo de pesquisa das steps da toolbar
Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
menuSearch = toolbar.getMenu().findItem(R.id.action_search);
SearchView searchView = (SearchView) menuSearch.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
searchString = query;
populateRecyclerView();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (newText.length() == 0) {
searchString = "";
populateRecyclerView();
}
return false;
}
});
Eu criei as variáveis menuSearch e searchString como privada no fragment iniciando como string vazia.
O método populateRecyclerView() executa a query e atualiza o adapter do RecyclerView executando
mAdapter.notifyDataSetChanged().
Você pode controlar a visibilidade do campo de pesquisa para que seja exibido somente nas telas que desejar.
Para isso, adicione a propriedade android:visible="false" no XML, adicione a linha após a definição do menu item
menuSearch.setVisible(true), sobrescreva o método onDetach() e insira menuSearch.setVisible(false) para ocultá-lo
ao sair do fragment.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment