2017-08-29 10 views
0

ユーザーが入力したテキストを自動完成するeditTextを作成しようとしています。たとえば、ユーザーが何かを入力した後(Lon)、アプリはロンドンを提案することができるので、の後にドンを挿入してください。Lon私はアドバイスを提供するサービスを持っているだけですが、ユーザーが何かを書いた後でこのサービスを呼び出すためにどのような種類のイベントを使用するのかわかりません(私はすべての手紙の後にサービスを呼びたくありません)。投稿なしの入力イベントを終了します

私はこれを試してみましたが、それは、ユーザーのキーを押して提出することを唯一の後に動作しますが、私は、イベントをキャッチしたい

bornCityTxt.setOnEditorActionListener(new EditText.OnEditorActionListener() { 

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

そして、重要度の低い「をユーザーがもはや入力している」、どのように私はで持つことはできません同じ時間に1つの編集テキストでユーザーテキストとヒントが表示されますか?

本当にありがとうございます。

答えて

1

あなたはリスナーを追加し、イベントにもかかわらず、私は、このソリューションを試してみてください

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

に入ったが、いくつかの理由のためにされているどのように多くの手紙afterTextChangedで確認することができますが、テキストが変更された後、私が入力した文字を投げるありますメソッドが解決された後に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; 
     } 
}); 

・ホープ、このことができます!

関連する問題