android控件edittext-addTextChangedListener監聽文本的變化


  前言:edittext的addTextChangedListener監聽事件用於監聽edittext的輸入文本的變化,他都用於密碼框,或者那種檢測用戶輸入過程中的變化。

  1.使用方式

  ①為edittext添加監聽器

1 mEtPassword = (EditText) findViewById(R.id.id_et_password);
2         //添加監聽器
3         mEtPassword.addTextChangedListener(new MyWatcher());

  ②創建一個實現TextWatcher接口的類,並實現他的方法

 1     class MyWatcher implements TextWatcher {
 2 
 3         //
 4         public void beforeTextChanged(CharSequence s, int start, int count,
 5                 int after) {
 6             // TODO Auto-generated method stub
 7 
 8         }
 9 
10         @Override
11         public void onTextChanged(CharSequence s, int start, int before,
12                 int count) {
13             // TODO Auto-generated method stub
14 
15         }
16 
17         
18         public void afterTextChanged(Editable edit) {
19         
20         }
21     }

  2.實現方法的解釋

  <1> public void afterTextChanged(Editable edit) //檢測文本改變之后的狀態

    edit // edit 輸入結束呈現在輸入框中的信息

    我以log的方式進行輸出,我在editext中輸出文本是woshizhi

01-17 09:51:53.585: E/MainActivity(2134): edit=w
01-17 09:51:54.009: E/MainActivity(2134): edit=wo
01-17 09:51:54.033: E/MainActivity(2134): edit=wos
01-17 09:51:54.033: E/MainActivity(2134): edit=wosh
01-17 09:51:54.085: E/MainActivity(2134): edit=woshi
01-17 09:52:01.497: E/MainActivity(2134): edit=woshiy
01-17 09:52:01.517: E/MainActivity(2134): edit=woshiyi
01-17 09:52:01.697: E/MainActivity(2134): edit=woshiyiz
01-17 09:52:01.785: E/MainActivity(2134): edit=woshiyizh
01-17 09:52:01.873: E/MainActivity(2134): edit=woshiyizhi

  通過上面可以看出在edittext中每輸入一個詞,就會相應的出來一個詞

  <2> public void beforeTextChanged(CharSequence s, int start, int count,int after)//文本在改變之前的狀態

           //s輸入框中改變前的字符串信息 

        //start 輸入框中改變前的字符串的起始位置 
        //count 輸入框中改變前后的字符串改變數量一般為0 
        //after 輸入框中改變后的字符串與起始位置的偏移量
   我以log的方式打印,我在edittext中同樣輸入woshiyizhi
01-17 10:08:41.269: E/MainActivity(2725): s=:start=0:count=0:after=1
01-17 10:09:07.197: E/MainActivity(2725): s=w:start=1:count=0:after=1
01-17 10:09:14.097: E/MainActivity(2725): s=wo:start=2:count=0:after=1
01-17 10:09:21.769: E/MainActivity(2725): s=wos:start=3:count=0:after=1
01-17 10:09:22.297: E/MainActivity(2725): s=wosh:start=4:count=0:after=1
01-17 10:09:24.117: E/MainActivity(2725): s=woshi:start=5:count=0:after=1
01-17 10:09:24.205: E/MainActivity(2725): s=woshiy:start=6:count=0:after=1
01-17 10:09:25.485: E/MainActivity(2725): s=woshiyi:start=7:count=0:after=1
01-17 10:09:25.657: E/MainActivity(2725): s=woshiyiz:start=8:count=0:after=1
01-17 10:09:25.729: E/MainActivity(2725): s=woshiyizh:start=9:count=0:after=1

  通過log可以看出只有text和start參數在變化

  <3>public void onTextChanged(CharSequence s, int start, int before,int count)//文本變化

        //s  輸入框中改變后的字符串信息 
        //start 輸入框中改變后的字符串的起始位置 
        //before 輸入框中改變前的字符串的位置 默認為0 
        //count 輸入框中改變后的一共輸入字符串的數量 
  我以log的方式打印 ,我在edittext中同樣輸入woshiyizhi
01-17 10:15:30.589: E/MainActivity(3065): s=w:start=0:after=0:count=1
01-17 10:15:46.345: E/MainActivity(3065): s=wo:start=1:after=0:count=1
01-17 10:15:48.893: E/MainActivity(3065): s=wos:start=2:after=0:count=1
01-17 10:15:49.921: E/MainActivity(3065): s=wosh:start=3:after=0:count=1
01-17 10:15:51.145: E/MainActivity(3065): s=woshi:start=4:after=0:count=1
01-17 10:15:51.681: E/MainActivity(3065): s=woshiy:start=5:after=0:count=1
01-17 10:15:52.333: E/MainActivity(3065): s=woshiyi:start=6:after=0:count=1
01-17 10:15:52.753: E/MainActivity(3065): s=woshiyiz:start=7:after=0:count=1
01-17 10:15:52.981: E/MainActivity(3065): s=woshiyizh:start=8:after=0:count=1
01-17 10:15:53.645: E/MainActivity(3065): s=woshiyizhi:start=9:after=0:count=1

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM