android - 每当更改输入/控件时,如何调用事件侦听器或方法?
问题描述
我有一个包含一堆广播组、复选框和文本字段的表单。我试图找出一种方法来在每次这些输入中的任何一个发生更改时调用方法(即选中单选按钮,选中复选框,更改文本字段)。事件侦听器不需要知道更改了哪些输入。
我该怎么做呢?我已经尝试在布局中添加一个事件侦听器,但这不起作用,因为事件侦听器仅在用户点击背景时被调用,并且如果任何输入被触摸它就不会触发。我真的不想为每个输入创建一个单独的侦听器。
有什么建议么?
更新:我也尝试过GestureDetector
按照此处所述实现 a ,但它似乎没有在我的控制台中记录任何内容。
解决方案
恐怕由于您希望收到不同类型事件的通知,因此您必须为每种控件类型创建适当的侦听器并从中调用更新方法。如果您有多个相同类型的单独控件,您可以创建抽象类并为每个控件扩展它。与此类似的东西:
class AbstractTextWatcher implements TextWatcher {
protected OnInputTriggered onInputTriggered;
public AbstractTextWatcher(OnInputTriggered onInputTriggered){
this.onInputTriggered = onInputTriggered;
}
// afterTextChanged and beforeTextChanged skipped for brevity
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
onInputTriggered.onInputTrigerred();
}
}
// sample OnInputTriggered listener
class OnInputTriggered {
public void onInputTrigerred(){
// do stuff you need
}
}
推荐阅读
- python - 以编程方式确定为将每月债务减少 X 所需的最小组合余额
- javascript - Javascript - 遍历一棵树以生成节点的序列
- amazon-s3 - 为多个 s3 文本对象生成 redshift ddls
- javascript - 如何在javascript中运行一个jar文件并让它返回一个json
- angular - 错误类型错误:this.memberListRef 未定义
- api - Telegram API,获取私信
- ruby-on-rails - 我的嵌套属性没有通过强参数
- python - 为什么我在运行程序时输入的前两个输入会在文本文件中重复?
- django - Django ORM 使用两个聚合获取数据,其中一个依赖于另一个
- tinymce - 在 tinyMCE 5 中限制输入数据的大小