JAVA中幾種數據填寫後提交按鈕改變狀態

在Android開發中有一種需求,比如姓名,電話,性別,地址這幾種必填信息填寫完了後提交按鈕才變成高亮,提示可以提交了,其他的信息非必填所以不用管了.你們是如何做這個小功能的?
下面是我的做法.


EditText mName;
EditText mPhone;
EditText mSex;
Button mBtn;

private static final int FLAG_NAME = 0x1;
private static final int FLAG_MOBILE = 0x2;
private static final int FLAG_SEX = 0x4;
private static final int FLAG_OK = 0x7;

//此處省略初始化......

//給需要的EditText增加內容觀察者
private void editTextAddWitch() {
    mName.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) {
            //其他的EditText也如此,修改FLAG_NAME爲相應的標誌.
            afterInput(FLAG_NAME, !TextUtils.isEmpty(s.toString()));
        }
    });

    //省略其他的內容監聽
}

/**
 * & ~都是位操作運算符&是與運算,規定 1&1=1  1&0=0 0&1=0  0&0=0,
 * ~是取反運算,它的作用是將二進制數中的1轉換成0,把0轉換成1。
 * 例如~11010=00101=101而 a&=~b的意思就是 a= a & (~b)
 * |是按位或操作,就是只要有一個1就是1,兩個都是0纔是0
 * @param flag
 * @param isValid
 */
private void afterInput(int flag, boolean isValid) {
    if (isValid) {
        mSubmitFlag |= flag;
    } else {
        mSubmitFlag &= ~flag;
    }
    mBtn.setEnabled(mSubmitFlag == FLAG_FINISHED);
}

0x1 == 0001
0x2 == 0010
0x4 == 0100
三者或 == 0111 == 0x7

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