2017-08-29 123 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; 
     } 
}); 

希望這有助於!