Le code sur lequel je travaille utilise un Toolbar
et gonfle un menu
.
Voici le 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 ()
{
..........
}
}
Mais maintenant, ils nécessitent un Search
bouton dans le tool_bar
. J'ai réussi à le mettre, j'ai suivi un guide ici
Quand j'essaye d'écrire quelque chose à rechercher, le toast que j'avais mis à tester le listener
jamais montré. ce qui indique listener
ne fonctionne pas
@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
Si vous souhaitez configurer la fonction de recherche dans votre
Fragment
, ajoutez simplement ces quelques lignes:Étape 1 - Ajoutez le champ de recherche à vous
toolbar
:Étape 2 - Ajoutez la logique à votre
onCreateOptionsMenu()
la source
R.menu.main
?Si vous souhaitez l'ajouter directement dans la barre d'outils.
la source
android.support.v7.widget.SearchView
dans le XML.implementation 'com.android.support:design:$latest_version'
Intégration de SearchView avec RecyclerView
1) Ajouter un élément SearchView dans le menu
SearchView
peut être ajouté commeactionView
dans le menu en utilisant2) Implémentez SearchView.OnQueryTextListener dans votre activité
SearchView.OnQueryTextListener
a deux méthodes abstraites. Ainsi, votre squelette d'activité ressemblerait maintenant à ceci après avoir implémenté l'écouteur de texte SearchView.3) Configurer le texte de l'indice SerchView, l'auditeur, etc.
4) Implémenter SearchView.OnQueryTextListener
C'est ainsi que vous pouvez implémenter des méthodes abstraites de l'écouteur.
5) Écrivez une méthode de filtrage dans votre adaptateur RecyclerView.
Vous pouvez proposer votre propre logique en fonction de vos besoins. Voici l'exemple d'extrait de code pour afficher la liste de Name qui contient le texte tapé dans le
SearchView
.Un exemple de code de travail complet peut être trouvé> ICI
Vous pouvez également consulter le code sur SearchView avec une base de données SQLite dans cette application musicale
la source
Implémentation de SearchView sans l'utilisation du
menu.xml
fichier et ouverture via le boutonDans votre,
Activity
nous devons utiliser la méthode de laonCreateOptionsMenu
méthode dans laquelle nous gonflerons par programme leSearchView
Et dans votre classe d'activité, vous pouvez ouvrir le
SearchView
sur n'importe quel bouton, cliquez sur la barre d'outils comme ci-dessousla source