每当输入/控件更改时,如何调用事件侦听器或方法?

时间:2019-02-22 16:21:58

标签: android

我有一个带有一堆收音机组,复选框和文本字段的表格。我试图找出每次这些输入中的任何一个更改时都调用方法的方法(即选中单选按钮,选中复选框,更改文本字段)。事件侦听器不需要知道更改了什么输入。

我应该如何去做?我已经尝试过将事件侦听器添加到布局中,但这是行不通的,因为仅当用户点击背景时才调用事件侦听器,并且如果触摸任何输入都不会触发。我真的不想为每个输入都创建一个单独的侦听器。

有什么建议吗?

更新:我也尝试过按照here的描述实施GestureDetector,但似乎并没有在控制台中记录任何内容。

1 个答案:

答案 0 :(得分:1)

恐怕由于要通知不同类型的事件,您将不得不为每种控件类型创建适当的侦听器并从中调用更新方法。如果您具有多个相同类型的单独控件,则可以创建抽象类并为每个控件扩展它。与此类似:

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
    }
 }