Edittext 監聽輸入完成
最近專案中有個需求,更改標題判斷輸入結束呼叫API更改標題。開始直接設定的TextWatcher,然後在afterTextChanged
事件裡呼叫API更改標題,然後發現每輸入一個字都會呼叫一次API並提示操作成功,體驗十分不好。
後面嘗試了多種方法後用handler.postDelayed解決問題
新建一個 Runnable
private Runnable delayRunnable = new Runnable() { @Override public void run() { updateName(title); } };
然後在Editext的TextWatcher中的onTextChanged方法裡判斷Runnable若不為空就移除,在afterTextChanged中延遲啟動Runnable
private TextWatcher watcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(delayRun!=null){ handler.removeCallbacks(delayRun); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { handler.postDelayed(delayRun, 2000); } };
0.0