Android EditText 无法批量清除监听

news/2024/5/18 9:33:46 标签: android, 安卓, 反射

最近维护以前的开发人员写的一段代码的时候,发现某个列表中复用的EditText中不停的在addTextWatcher,而且是不断的new 一个新TextWatcher进去,而且还有不停的在添加多个不同种的TextWatcher。这样毫无疑问是有问题的。 

 

很碰巧的是EditText没有提供批量只有一个removeTextChangedListener

那么如何批量移除?

就做一个简单反射吧。

 public static void removeAllTextChangedListener(EditText editText) {
        if (editText != null) {
            try {
                Class clazz = Class.forName("android.widget.TextView");
                Field field = clazz.getDeclaredField("mListeners");
                field.setAccessible(true);
                field.set(editText, null);
            } catch (NoSuchFieldException | IllegalAccessException | ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    }

 


http://www.niftyadmin.cn/n/893199.html

相关文章

OpenCV:安装

依赖: sudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devsudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-…

一个超简单的Android拖拽控件

这是一款很简单易用的拖拽控件,看到同事iOS底部自带抽拉的控件自带拖拽效果,android的抽屉控件个人觉得用起来略显重量,于是写了一个简单易用的拖拽控件。 效果如下: 代码链接: gitee 码云 github

以色列3D打印心脏

原论文。 相关材料。

NIO三大组件和ByteBuffer

目录 一、NIO三大组件 1、Channel 2、Buffer 3、Selector 二、ByteBuffer 1、基本使用 2、内部结构 3、常用方法 allocate方法 读取方法 字符串与ByteBuffer互转 Scattering Reads 4、念包、半包问题 三、文件编程 1、FileChannel 2、两个Channel传输数据 3、…

记录一个不想做的需求

审查之前的人员写的代码的时候发现有一个路线规划预计到达时间是在客户端处理的。 本机当前时间所选路线需要耗费时间 由于预计到达时间会影响到评分计算进而影响到收入,于是给领导提了一下,建议只把所选路线需要耗费时间扔到服务端去计算。 可领导说…

打开chrome需要输入密码的解决办法

搜索应用程序“密码和密钥”在“登录”选项上右键,选择“更改密码”,输入旧密码,新密码不输入。如图。重启即可。这样做,sudo命令依然需要密码,但打开chrome不需要密码。取消密码

反人类的设计

最近看到一个很奇怪的网页功能设计,一开始需要用户输入YYYYYYYNNNNN的字符串每一位Y代表可以某项服务,N代表不可以某项服务。 之后经过吐槽后优化了变成,有12个复选框,勾代表可以不勾代表不可以。这样看起来是比较可以理解的。 …

TF:tf.estimator

tf.estimator是比tf.contrib.slim更高级的API,能同时训练和验证模型。[更多] tf.estimator的有些参数是函数,但又不能带参数,如: run_config tf.estimator.RunConfig().replace(save_checkpoints_secs1e9) model tf.estimator.E…