Created
May 28, 2021 14:44
-
-
Save EduardoSP6/c6394b8773acc8c251df8d6f1f8c8a91 to your computer and use it in GitHub Desktop.
How to create search field in Android app
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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