在Android中,如何在变量发生变化时采取措施?

tsv*_*der 31 java android listener

在Android应用程序(或更常见的Java,如果它没有什么不同),每当变量的值发生变化时调用方法的最佳方法是什么?

mom*_*omo 58

你真正想要做的是设置事件驱动模型,以便在事件发生时触发监听器(在你的情况下,比如变量值已经改变).这不仅适用于Java,也适用于其他编程语言,尤其是在UI编程环境中(尽管不一定仅适用于此)

通常,这可以通过执行以下步骤来完成:

  • 确定在触发事件的情况下侦听器应实现的接口.对于您的情况,您可以将其称为VariableChangeListener并将接口定义为:


    public interface VariableChangeListener {
        public void onVariableChanged(Object... variableThatHasChanged);
    }

Run Code Online (Sandbox Code Playgroud)

您可以将任何您认为对于侦听器来说很重要的参数放在此处.通过抽象到接口中,您可以灵活地在变量已更改的情况下实现必要的操作,而无需将其与发生事件的类紧密耦合.

  • 在事件发生的类中(在您的情况下,变量可以更改的类),添加一个方法来注册事件的侦听器.如果你调用你的接口VariableChangeListener,那么你将有一个方法,如

    // while I only provide an example with one listener in this method, in many cases
    // you could have a List of Listeners which get triggered in order as the event 
    // occurres
    public void setVariableChangeListener(VariableChangeListener variableChangeListener) {
       this.variableChangeListener = variableChangeListener;
    }

Run Code Online (Sandbox Code Playgroud)

默认情况下,没有人收听该事件

  • 在发生事件(变量已更改)的情况下,您将触发侦听器,代码看起来像


   if( variableValue != previousValue && this.variableChangeListener != null) {
       // call the listener here, note that we don't want to a strong coupling
       // between the listener and where the event is occurring. With this pattern
       // the code has the flexibility of assigning the listener
       this.variableChangeListener.onVariableChanged(variableValue);
   }

Run Code Online (Sandbox Code Playgroud)

同样,这是编程中非常常见的做法,基本上对事件或变量做出反应.在Javascript中,您会看到这是onclick()的一部分,在Android中,您可以检查各种侦听器的事件驱动模型,例如在Button onclick事件上设置的OnClickListener.在您的情况下,您将根据变量发生变化时的不同事件触发侦听器

  • 我认为*你可能最终帮助那个便士用这个解释让我听听了.此页面正在收藏! (8认同)