2012-04-03 13 views

Antwort

5

Eine Variable ist nicht allein, ich nehme an. Es wohnt als Mitglied in einer Klasse - richtig? Die Listener-Schnittstelle würde also in dieser Klasse verschachtelt sein, und die Klasse hätte eine Member-Variable für einen Listener und eine setBooChangeListener-Methode. Und bei jeder Veränderung der Variable (es ist nicht öffentlich, hoffe ich) würden Sie den Hörer anrufen, falls vorhanden. Das wars so ziemlich.

class C 
{ 
    private boolean mBoo; //that's our variable 

    public interface BooChangeListener 
    { 
     public void OnBooChange(boolean Boo); 
    } 

    private BooChangeListener mOnChange = null; 

    public void setOnBooChangeListener(BooChangeListener bcl) 
    { 
     mOnChange = bcl; 
    } 
} 

Es gibt keine Möglichkeit, das System (Java) sehen die Variable haben und automatisch einen Zuhörer feuern, wenn es sich verändert hat. Es gibt keine Magie.

+3

Schönes einfaches Code-Snippet. Es fehlt nur der Setter, wo der Listener benachrichtigt wird, wenn einer gesetzt wurde :) – WarrenFaith

+4

Das einzige, was in dieser Antwort fehlt, ist eine Setter-Methode für 'mBoo' zu definieren, die den Listener benachrichtigt, wenn die Variable gesetzt ist. –

+1

Wie die anderen beiden sagten, haben Sie es versäumt, den Zuhörer einzustellen! –

0

Ich wünschte, ich dies als Kommentar hinzufügen könnte ... Ich bin damit einverstanden oben mit Seva mit dem größten Teil jedoch betrachten die Klasse eine Bohne zu machen und die Property Schnittstelle implementiert:

http://docs.oracle.com/javase/1.4.2/docs/api/java/beans/PropertyChangeListener.html

Bohne auf diese Weise können Eigenschaften tatsächlich gebunden und beobachtet werden. In javafx 2.0 hat Oracle einige sehr fortschrittliche Mechanismen hinzugefügt, um dies zwischen Eigenschaften und UI-Elementen zu tun, und ich hoffe wirklich, dass dies in die Kern-API verzweigt werden kann und irgendwie für Android-Entwickler verfügbar wird. Wenn JavaFX 2.0 zu spät für das Spiel ist, können wir zumindest einige der moderneren Paradigmenverschiebungen im Kern bekommen, sodass Situationen wie diese einfach und rationell implementiert werden können.

+0

Ich glaube nicht, dass Bohnen derzeit auf Android unterstützt werden. Außerdem ist PropertyChangeListener typenunabhängig. –

Verwandte Themen