J'ai un SearchView. Lorsque l'utilisateur clique sur le bouton keyboard search, je dois passer un appel au serveur. À quoi ressemble le code de l'auditeur? Je pense que je dois utiliser OnClickListener. Mais le code interne permettant de savoir que c’est le bouton de recherche, je ne sais pas comment le déterminer.
J'ai fait comme ça
la onQueryTextSubmit
est la méthode que vous recherchez.
définissez setOnQueryTextListener
sur votre vue de recherche.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
MenuItem searchItem = menu.findItem(R.id.search_city);
searchView = (SearchView) searchItem.getActionView();
searchView.setQueryHint("Search View Hint");
searchView.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
//Log.e("onQueryTextChange", "called");
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
// Do your task here
return false;
}
});
return true;
}
espérons que cette aide
Ici tu peux aller pour la meilleure réponse Android pas Kotlin
binding.edtSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
// Your piece of code on keyboard search click
if (AppValidator.isValid(SearchEventsActivity.this, binding.edtSearch, "Please enter your search keyword.")) {
searchKeyword = binding.edtSearch.getText().toString().trim();
//Search Events categories
callSearchEventsApi();
}
return true;
}
return false;
}
});
Assurez-vous d'avoir ajouté la ligne suivante dans votre EditText
Android:imeOptions="actionSearch"
Juste comme suit: -
<EditText
Android:id="@+id/edtSearch"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:layout_marginLeft="@dimen/_15dp"
Android:background="@null"
Android:fontFamily="@font/roboto_regular"
Android:textColorHint="@color/text_color_light"
Android:layout_gravity="center"
Android:textSize="@dimen/_16sp"
Android:maxLines="1"
Android:singleLine="true"
Android:imeOptions="actionSearch"
Android:hint="@string/search"/>
J'espère que cela vous aidera à résoudre votre problème. !!!!
Ceci est la version kotlin:
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextChange(s: String): Boolean {
// make a server call
return true
}
override fun onQueryTextSubmit(s: String): Boolean {
val intent = Intent(applicationContext, YourSearchableActivity::class.Java)
intent.putExtra(SearchManager.QUERY, s)
intent.putExtra(CUSTOM_MESSAGE, "you can also add custom message when submitting the search action")
intent.setAction(Intent.ACTION_SEARCH)
startActivity(intent)
return true
}
})
Méthode SearchView
setOnQueryTextLister
fera votre travail comme indiqué ci-dessous.
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
showSnackBar(query.toString());
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
Ici, searchView est un objet de SearchView.