2017-08-29 124 views
0

我正在尝试创建一个自动填充用户输入文本的editText。例如,只有在用户键入东西之后(例如Lon),该应用可以建议伦敦,因此在之后插入don Lon。我alreay有服务给我的建议,但我不知道什么样的事件用于调用此服务只有在用户写一些东西(我不想在每封信后打电话服务)。未提交就完成打字事件

我想这一点,但它只有在用户按下提交的作品,但我想赶上事件“的用户不再键入”

bornCityTxt.setOnEditorActionListener(new EditText.OnEditorActionListener() { 

     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      //mycode 
      return true; 
     } 
    }); 

不重要,我怎么可以在同时在一个编辑文本中的用户文本和提示?

真的很感谢。

回答

1

您可以添加一个监听器,然后在afterTextChanged检查有多少个字母已经进入

Handler h = new Handler(); 
editText.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      if(s.toString().length()>0){ 
       h.removeCallbacksAndMessages(null); // Cancels previous call 
       h.postDelayed(new Runnable() { 

         @Override 
         public void run() 
         { 
         //do something with entered text 
         } 
       }, 1000); // 1 second 
      } 
      else{ 


      } 
     } 
    }); 
+0

我尝试此解决方案,但由于某些原因,尽管该事件的文字变化,我键入字母后抛在方法解决后显示在edittext中,所以在调用服务器之后。对于这种延迟似乎我不打字 –

+0

我不知道你的应用程序究竟发生了什么,但如果你延迟后致电你的服务会怎么样。编辑代码 – Evgeniy

+0

真的非常感谢! –

0

尝试的OnKeyListener:

bornCityTxt.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View view, int i, KeyEvent keyEvent) { 
      //your code 
      return true; 
     } 
}); 

希望这有助于!