今天有個需求是在客戶輸入內容後,輸入完成的時候,進行一個動作顯示一個列表讓他可以選擇
一開始把注重點放在了輸入內容這塊,準備用個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);
}
}
}
}
});
悲報是,我之所以寫這個是因爲需求改動後,這個被解決的問題隨着被改動的需求,就這麼消失了~
說來也是好笑,當我開心的說出“那個問題我想到更好的解決方式了”的時候
對方淡定的告訴我 “不用解決了,問題本身就沒有了~”