如何判斷Edittext輸入完成

分享一個最近做的項目中遇到的問題 。。 需要監聽用戶輸入完畢 然後的操作。。 想了很多辦法 最後發現下面的 辦法還是比較符合 邏輯的。

主要就是通過時間的間隔來判斷可能用戶輸入完畢。    大家可以根據實際情況 自行修改,

代碼中已經進行了註釋。很明確。希望能幫到大家 。。



// edittexti 設置 文本變化監聽

Edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
pretime = System.currentTimeMillis();
//已經調用了一次就不在調用
if(!hasTimerDown){
yzm();
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {

}
});

  }

//已經開始了計時判斷

 boolean hasTimerDown=false;
 private class YzmHandler extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
yzm();
}
 }

YzmHandler yzmhandle=new YzmHandler();


public void yzm(){
hasTimerDown=true;
//當前時間與輸入最後一次時間 做差 若大於1.5秒那麼可能已經輸入完成那麼開始驗證

if(System.currentTimeMillis()-pretime>1500){

//可能輸入完畢

//便於下次重新檢驗輸入事件重置爲false;

        hasTimerDown=false;
}else{
//若間隔不大於1.5秒 那麼繼續發給handler每隔500毫秒進行判斷是否間隔大於1.5秒
yzmhandle.sendEmptyMessageDelayed(3, 500);

}
}
發佈了32 篇原創文章 · 獲贊 30 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章