Android 监听页面里所有TextView(EditView)文字变化。最简洁!!!

如果一个页面有多个TextView或者EditView,需要监听文字变化,如果每个tv或者ev都写一个TextWatcher会让代码看起来很臃肿,可以用下面方法简化代码。

1、首先,添加监听

{
        et1.addTextChangedListener(listener(et1));
        et2.addTextChangedListener(listener(et2);
        et3.addTextChangedListener(listener(et3));
        et4.addTextChangedListener(listener(et4));
        et5.addTextChangedListener(listener(et5));
}

2、监听action单做一个返回值为TextWatcher的函数,参数为添加监听的控件。

//这样就可以把View传过来,用于判断
private TextWatcher listener(View view) {
        return 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) {
                if (view == et1) {
                    bool1 = s.length() > 0;
                } else if (view == et2) {
                    bool2 = s.length() > 0;
                } else if (view == et3) {
                    bool3 = s.length() > 0;
                } else if (view == et4) {
                    bool4 = s.length() > 0;
                } else if (view == et5) {
                    bool5 = s.length() > 0;
                } 
                if (bool1 && bool2 && bool3 && bool4 && bool5){
                    btn.setEnabled(true);
                }else {
                    btn.setEnabled(false);
                }
            }
        };
    }

 

-- NORMAL --

-- NORMAL --

-- NORMAL --

你可能感兴趣的:(Android 监听页面里所有TextView(EditView)文字变化。最简洁!!!)