首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

施用TextWatcher监听EditText的文本变化之后动态改变EditText里面的内容

2012-12-25 
使用TextWatcher监听EditText的文本变化之后动态改变EditText里面的内容今天碰到一个这样的问题:使用TextW

使用TextWatcher监听EditText的文本变化之后动态改变EditText里面的内容

  今天碰到一个这样的问题:使用TextWatcher对EditText进行监听,当EditText中值为某一特定内容时,将EditText中的值设为我们需要的那个值。一开始就是简单的在EditText中使用setText(...)来实现,结果出现栈溢出的异常。这里提供一个解决方案:当判断条件满足时,在afterTextChanged()方法中将TextWatcher移除掉,然后设置EditText的值,接着把TextWatcher重新设置进去。就是这么简单,这里我们判断如果EditText中的值为111,就将EditText的值设置为11111new。先看效果图,再看代码。

效果图:

施用TextWatcher监听EditText的文本变化之后动态改变EditText里面的内容

代码:

/**     * Removes the specified TextWatcher from the list of those whose     * methods are called     * whenever this TextView's text changes.     */    public void removeTextChangedListener(TextWatcher watcher) {        if (mListeners != null) {            int i = mListeners.indexOf(watcher);            if (i >= 0) {                mListeners.remove(i);            }        }    }

文档已经说的很清楚了,该方法仅仅是将当前的TextWatcher从集合中移除。我们可以理解成该TextWatcher对象暂时未被回收,所以在不进行耗时操作的情况下,该解决方案是可行的,不知道还有没有更好的方式,如果有朋友有更好的方式,可以拿出来一起分享。


热点排行