addTextChangedListener(new TextWatcher()){}

参考:【Android】关于addTextChangedListener()方法的上机记录

addTextChangedListener的监听:

        mEtTest.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            //这个方法被调用,说明在s字符串中,
            //从start位置开始的count个字符即将被长度为after的新文本所取代。
            //在这个方法里面改变s,会报错。
                Log.e("111", "1=====================================================");
                Log.e("111", "1==beforeTextChanged , s==" + s.toString());
                Log.e("111", "1==beforeTextChanged ,start==" + start);
                Log.e("111", "1==beforeTextChanged ,count==" + count);
                Log.e("111", "1==beforeTextChanged ,after==" + after);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            //这个方法被调用,说明在s字符串中,
            //从start位置开始的count个字符刚刚取代了长度为before的旧文本。
            //在这个方法里面改变s,会报错。
                Log.e("111", "2==onTextChanged ,s==" + s.toString());
                Log.e("111", "2==onTextChanged ,start==" + start);
                Log.e("111", "2==onTextChanged ,count==" + count);
                Log.e("111", "2==onTextChanged ,before==" + before);

            }

            @Override
            public void afterTextChanged(Editable s) {

            //这个方法被调用,那么说明s字符串的某个地方已经被改变。
                Log.e("111", "3==afterTextChanged ,s==" + s.toString());

            }
        });

示例一:

//在输入“你”,你
1===================================================== 
1==beforeTextChanged , s==
1==beforeTextChanged ,start==0
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1

2==onTextChanged ,s==你
2==onTextChanged ,start==0
2==onTextChanged ,count==1
2==onTextChanged ,before==0

3==afterTextChanged ,s==你



//继续输入“们”,你们
1=====================================================
1==beforeTextChanged , s==你
1==beforeTextChanged ,start==1
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1

2==onTextChanged ,s==你们
2==onTextChanged ,start==1
2==onTextChanged ,count==1
2==onTextChanged ,before==0

3==afterTextChanged ,s==你们



//继续输入“好”,你们好
1=====================================================
1==beforeTextChanged , s==你们
1==beforeTextChanged ,start==2
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1

2==onTextChanged ,s==你们好
2==onTextChanged ,start==2
2==onTextChanged ,count==1
2==onTextChanged ,before==0

3==afterTextChanged ,s==你们好

示例二:

//输入“你”
 1=====================================================
 1==beforeTextChanged , s==
 1==beforeTextChanged ,start==0
 1==beforeTextChanged ,count==0
 1==beforeTextChanged ,after==1

 2==onTextChanged ,s==你
 2==onTextChanged ,start==0
 2==onTextChanged ,count==1
 2==onTextChanged ,before==0

 3==afterTextChanged ,s==你


//继续输入“们”
1=====================================================
1==beforeTextChanged , s==你
1==beforeTextChanged ,start==1
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1

2==onTextChanged ,s==你们
2==onTextChanged ,start==1
2==onTextChanged ,count==1
2==onTextChanged ,before==0

3==afterTextChanged ,s==你们

//把光标移到你和们之间,再次输入“好”
1=====================================================
1==beforeTextChanged , s==你们
1==beforeTextChanged ,start==1
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1

2==onTextChanged ,s==你好们
2==onTextChanged ,start==1
2==onTextChanged ,count==1
2==onTextChanged ,before==0

3==afterTextChanged ,s==你好们

你可能感兴趣的:(Android基础)