SearchViewがあります。ユーザーがkeyboard検索ボタンをクリックすると、サーバーを呼び出す必要があります。リスナーのコードはどのように見えますか? OnClickListenerを使用する必要があると思います。しかし、それが検索ボタンであることを知るための内部コードです。それをどのように決定するかはわかりません。
私はこのようにしました
onQueryTextSubmit
は、探しているメソッドです。
検索ビューにsetOnQueryTextListener
を設定します。
@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;
}
この助けを願っています
これは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
}
})
ここでは、Android 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;
}
});
EditTextに次の行を追加したことを確認してください
Android:imeOptions="actionSearch"
以下のように:-
<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"/>
これが問題の解決に役立つことを願っています。
SearchViewメソッド
setOnQueryTextLister
以下に示すようにあなたの仕事をします。
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
showSnackBar(query.toString());
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
ここでsearchViewはSearchViewのオブジェクトです。