關於輸入框輸入內容後,結束輸入進行操作的事件監聽

今天有個需求是在客戶輸入內容後,輸入完成的時候,進行一個動作顯示一個列表讓他可以選擇

一開始把注重點放在了輸入內容這塊,準備用個TextWatcher來進行輸入的監聽,然後再判斷輸入內容達要求後,請求接口並在成功的時候展示列表。

結果在做完了TextWatcher做完之後,突然注意到了,這個需求說的是輸入內容後,並不需要在輸入過程中展示列表,而且有修改這個操作在,如若把所有修改都當做一次輸入,就會怎麼了很多次接口請求

意識到自己的坑之後~

把注重點放在了輸入內容  “後”,首先輸入框EditText要輸入內容必然會獲取焦點或失去焦點

所以要知道是否結束輸入,只要監聽焦點變化(onFocusChangeListener)則可,而開始輸入時獲取焦點,結束輸入時失去焦點

然後再判斷當前爲結束輸入的時候,順帶進行一次輸入內容的判斷就可以,在用戶輸入結束,並輸入了要求內容的時候,進行接口請求並展示列表

類似這樣:

edit_billMoney.setOnFocusChangeListener(new View.OnFocusChangeListener() {
//設置edit_billMoney的焦點監聽事件
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
//當焦點變化後hasFocus(是否有焦點)爲沒有時,則爲結束輸入
            String msg = edit_billMoney.getText().toString().trim();
            if (!TextUtils.isEmpty(msg) && Integer.valueOf(msg) != 0) {
                if (bill_money.compareTo(msg) != 0) {
                    bill_money = msg;
                    if (!TextUtils.isEmpty(shengyuedu))
                        mPresenter.requestPassageWay(mContext, address_id, bill_money, shengyuedu);
                }
            }
        }
    }
});

悲報是,我之所以寫這個是因爲需求改動後,這個被解決的問題隨着被改動的需求,就這麼消失了~

說來也是好笑,當我開心的說出“那個問題我想到更好的解決方式了”的時候

對方淡定的告訴我 “不用解決了,問題本身就沒有了~”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章