2011-04-19 64 views
11

我在我的应用程序中使用搜索视图。现在我只想在searchview文本框中输入文本并在另一个textview上显示它。如果我键入文本并单击按钮我可以做同样的事情,但我不想使用任何额外的按钮。我只是想显示结果,当我按下输入key.plz任何人都可以帮助我..(如果你建议任何听众PLZ提供我的代码)如何获取searchview中的事件android

+0

我试了很多听众,但他们没有 - [R working.i DNT KNW d原因... – 2011-04-19 10:28:24

回答

32

尝试使用搜索查看

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; 
    } 
} 
+1

我试图this.but它不是工作.... – 2011-04-19 09:51:17

+2

它工作正常。您必须先将侦听器添加到您的搜索视图中。 – Asim 2013-02-07 05:09:48

+1

不,监听器与否,当输入的字符串为空时,onQueryTextSubmit不起作用。 – 2013-05-30 14:04:34

16

以上答案是好的,但实际上没有完成,你需要设置一个动作监听你的搜索视图setOnQueryTextListener。您可以通过两种方式做到这一点创建一个实现必要的类是一个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 
      } 

     }); 
5

它还可以与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()); 
        } 
       } 
      }); 

守则订阅观察具有500毫秒延迟一些文本的变化。

这是混帐回购协议获得RXAndroid链接: https://github.com/JakeWharton/RxBinding

相关问题