我在我的应用程序中使用搜索视图.现在我只想在SearchView文本框中输入文本并将其显示在另一个textview上.如果我键入文本并单击按钮我也可以这样做.但我不想使用任何额外的按钮.我只想在按下回车键时显示结果.
Hig*_*yer 45
尝试使用SearchView的setOnQueryTextListener
new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
// your text view here
textView.setText(newText);
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
textView.setText(query);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
Mr.*_*r.Q 22
上面的答案很好但不完整实际上你需要为你的搜索视图设置一个动作监听器.您可以通过两种方式创建一个类,该类实现必要的类作为OnQueryTextListener并创建一个新对象并将其用作搜索视图查询文本侦听器或使用以下紧凑形式:
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
callSearch(query);
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
// if (searchView.isExpanded() && TextUtils.isEmpty(newText)) {
callSearch(newText);
// }
return true;
}
public void callSearch(String query) {
//Do searching
}
});
Run Code Online (Sandbox Code Playgroud)
这也可以通过Jake Wharton的RXAndroid和RxBinding完成,如下所示:
RxSearchView.queryTextChanges(searchView)
.debounce(500, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<CharSequence>() {
@Override
public void call(CharSequence charSequence) {
if(charSequence!=null){
// Here you can get the text
System.out.println("SEARCH===" + charSequence.toString());
}
}
});
Run Code Online (Sandbox Code Playgroud)
代码订阅观察文本更改,延迟时间为500毫秒.
这是获取RXAndroid的git repo的链接:https: //github.com/JakeWharton/RxBinding
在 Kotlin 中,你可以这样做:
searchView.setOnQueryTextListener(object : OnQueryTextListener {
override fun onQueryTextChange(newText: String): Boolean {
return false
}
override fun onQueryTextSubmit(query: String): Boolean {
// task HERE
return false
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33343 次 |
| 最近记录: |