zoukankan      html  css  js  c++  java
  • TextWatcher-监听输入框内容变化

    今天在做邮件登录的时候,遇到了输入框(Edittext)监听事件(TextWatcher),现在记录下。

    首先看如下代码

    eText.addTextChangedListener(new TextWatcher() {
    
                @Override
                public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                        int arg3) {
                    Log.e("123", "ontextchange----" + "|arg0===" + arg0 + "|arg1===" + arg1
                            + "|arg2===" + arg2 + "|arg3===" + arg3);
                }
    
                @Override
                public void beforeTextChanged(CharSequence arg0, int arg1,
                        int arg2, int arg3) {
                    Log.e("123", "before----" + "|arg0===" + arg0 + "|arg1===" + arg1
                            + "|arg2===" + arg2 + "|arg3===" + arg3);
                }
    
                @Override
                public void afterTextChanged(Editable arg0) {
                    // TODO Auto-generated method stub
                    Log.e("123", "afterchange----" + "|arg0===" + arg0);
                }
            });

    然后我们看下输出的log

    1.这个是连续输入时候的log

    07-27 16:58:56.692: E/123(6298): before----|arg0===|arg1===0|arg2===0|arg3===1
    07-27 16:58:56.693: E/123(6298): ontextchange----|arg0===1|arg1===0|arg2===0|arg3===1
    07-27 16:58:56.695: E/123(6298): afterchange----|arg0===1
    07-27 16:59:04.962: E/123(6298): before----|arg0===1|arg1===1|arg2===0|arg3===2
    07-27 16:59:04.963: E/123(6298): ontextchange----|arg0===1理解|arg1===1|arg2===0|arg3===2
    07-27 16:59:04.965: E/123(6298): afterchange----|arg0===1理解
    07-27 16:59:09.192: E/123(6298): before----|arg0===1理解|arg1===3|arg2===0|arg3===1
    07-27 16:59:09.193: E/123(6298): ontextchange----|arg0===1理解我|arg1===3|arg2===0|arg3===1
    07-27 16:59:09.200: E/123(6298): afterchange----|arg0===1理解我

    2.这个是当我们删除一个字符的时候的输出结果

    07-27 16:59:26.863: E/123(6298): before----|arg0===1理解我|arg1===3|arg2===1|arg3===0
    07-27 16:59:26.863: E/123(6298): ontextchange----|arg0===1理解|arg1===3|arg2===1|arg3===0
    07-27 16:59:26.877: E/123(6298): afterchange----|arg0===1理解

    通过上面的结果我们总结下TextWatch的监听事件三个方法以及参数的意义

    触发过程:
     
    beforeTextChanged(CharSequence s,int start,int count,int after);
    在EditText里的内容即将发生变化之前触发,它保留的其实是上次事件的结果
    该方法反映的是,EditText在要发生变化之前,原来的内容字符串s有哪几个字符将要发生何种变化。
    无论何种变化方式,都可以理解为:输入框的原内容字符串s,从索引位置start(索引从0开始)开始,
    有count个字符即将被替换,替换这count个字符的新的字符个数为after
    s 是变化之前的edittext内容
     
    onTextChanged(CharSequence s,int start,int before,int count);

    在EditText里的内容发生变化之时触发,

    在变化时的新的字符串s里,从索引位置start开始,有count个字符,是替换了原来的before个字符的
    注意:s是变化之后的输入框内容
    这个方法的参数值,结果应该是跟before 方法参数一样的
     
    afterTextChanged(Editable s)

    text变化之后触发,s是最终新的输入框内容

    如果我们希望监听edittext,然后通过它的内容变化最edittext进行操作。操作应该是在after方法中进行。而且,在监听事件中进行edittext值操作,一定要避免事件的死循环。因为每一次edittext变化,都是导致监听事件的执行。

     
  • 相关阅读:
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark RDD(Resilient Distributed Datasets)论文
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    【机器学习实战】第10章 K-Means(K-均值)聚类算法
    [译]flexbox全揭秘
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_textwatch_15727172.html
Copyright © 2011-2022 走看看