• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.databinding;
18 
19 /**
20  * Observable classes provide a way in which data bound UI can be notified of changes.
21  * {@link ObservableList} and {@link ObservableMap} also provide the ability to notify when
22  * changes occur. ObservableField, ObservableParcelable, ObservableBoolean, ObservableByte,
23  * ObservableShort, ObservableInt, ObservableLong, ObservableFloat, and ObservableDouble provide
24  * a means by which properties may be notified without implementing Observable.
25  * <p>
26  * An Observable object should notify the {@link OnPropertyChangedCallback} whenever
27  * an observed property of the class changes.
28  * <p>
29  * The getter for an observable property should be annotated with {@link Bindable}.
30  * <p>
31  * Convenience class BaseObservable implements this interface and PropertyChangeRegistry
32  * can help classes that don't extend BaseObservable to implement the listener registry.
33  */
34 public interface Observable {
35 
36     /**
37      * Adds a callback to listen for changes to the Observable.
38      * @param callback The callback to start listening.
39      */
addOnPropertyChangedCallback(OnPropertyChangedCallback callback)40     void addOnPropertyChangedCallback(OnPropertyChangedCallback callback);
41 
42     /**
43      * Removes a callback from those listening for changes.
44      * @param callback The callback that should stop listening.
45      */
removeOnPropertyChangedCallback(OnPropertyChangedCallback callback)46     void removeOnPropertyChangedCallback(OnPropertyChangedCallback callback);
47 
48     /**
49      * The callback that is called by Observable when an observable property has changed.
50      */
51     abstract class OnPropertyChangedCallback {
52 
53         /**
54          * Called by an Observable whenever an observable property changes.
55          * @param sender The Observable that is changing.
56          * @param propertyId The BR identifier of the property that has changed. The getter
57          *                   for this property should be annotated with {@link Bindable}.
58          */
onPropertyChanged(Observable sender, int propertyId)59         public abstract void onPropertyChanged(Observable sender, int propertyId);
60     }
61 }
62