ObservableLong.java revision 9784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3
11b86fe063badb5f28c467ade39be0f4008688947Andreas Huber/*
21b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * Copyright (C) 2015 The Android Open Source Project
31b86fe063badb5f28c467ade39be0f4008688947Andreas Huber *
41b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
51b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * you may not use this file except in compliance with the License.
61b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * You may obtain a copy of the License at
71b86fe063badb5f28c467ade39be0f4008688947Andreas Huber *
81b86fe063badb5f28c467ade39be0f4008688947Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
91b86fe063badb5f28c467ade39be0f4008688947Andreas Huber *
101b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * Unless required by applicable law or agreed to in writing, software
111b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
121b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * See the License for the specific language governing permissions and
141b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * limitations under the License.
151b86fe063badb5f28c467ade39be0f4008688947Andreas Huber */
161b86fe063badb5f28c467ade39be0f4008688947Andreas Huberpackage android.databinding;
171b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
181b86fe063badb5f28c467ade39be0f4008688947Andreas Huberimport android.os.Parcel;
191b86fe063badb5f28c467ade39be0f4008688947Andreas Huberimport android.os.Parcelable;
201b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
211b86fe063badb5f28c467ade39be0f4008688947Andreas Huberimport java.io.Serializable;
221b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
231b86fe063badb5f28c467ade39be0f4008688947Andreas Huber/**
241b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * An observable class that holds a primitive long.
251b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * <p>
261b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * Observable field classes may be used instead of creating an Observable object:
271b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * <pre><code>public class MyDataObject {
281b86fe063badb5f28c467ade39be0f4008688947Andreas Huber *     public final ObservableLong friendCount = new ObservableLong();
291b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * }</code></pre>
301b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * Fields of this type should be declared final because bindings only detect changes in the
311b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * field's value, not of the field itself.
321b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * <p>
3337d8b27e5470d8243288a87e90871efd43f29606Chong Zhang * This class is parcelable and serializable but callbacks are ignored when the object is
341b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * parcelled / serialized. Unless you add custom callbacks, this will not be an issue because
351b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * data binding framework always re-registers callbacks when the view is bound.
361b86fe063badb5f28c467ade39be0f4008688947Andreas Huber */
371b86fe063badb5f28c467ade39be0f4008688947Andreas Huberpublic class ObservableLong extends BaseObservable implements Parcelable, Serializable {
381b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    static final long serialVersionUID = 1L;
391b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    private long mValue;
401b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
411b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    /**
421b86fe063badb5f28c467ade39be0f4008688947Andreas Huber     * Creates an ObservableLong with the given initial value.
431b86fe063badb5f28c467ade39be0f4008688947Andreas Huber     *
441b86fe063badb5f28c467ade39be0f4008688947Andreas Huber     * @param value the initial value for the ObservableLong
451b86fe063badb5f28c467ade39be0f4008688947Andreas Huber     */
461b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    public ObservableLong(long value) {
471b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        mValue = value;
481b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    }
491b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
501b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    /**
511b86fe063badb5f28c467ade39be0f4008688947Andreas Huber     * Creates an ObservableLong with the initial value of <code>0L</code>.
521b86fe063badb5f28c467ade39be0f4008688947Andreas Huber     */
531b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    public ObservableLong() {
541b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    }
551b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
561b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    /**
571b86fe063badb5f28c467ade39be0f4008688947Andreas Huber     * @return the stored value.
581b86fe063badb5f28c467ade39be0f4008688947Andreas Huber     */
591b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    public long get() {
601b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        return mValue;
611b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    }
621b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
631b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    /**
641b86fe063badb5f28c467ade39be0f4008688947Andreas Huber     * Set the stored value.
651b86fe063badb5f28c467ade39be0f4008688947Andreas Huber     */
661b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    public void set(long value) {
671b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        if (value != mValue) {
681b86fe063badb5f28c467ade39be0f4008688947Andreas Huber            mValue = value;
691b86fe063badb5f28c467ade39be0f4008688947Andreas Huber            notifyChange();
701b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        }
711b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    }
721b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
731b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    @Override
741b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    public int describeContents() {
751b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        return 0;
761b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    }
771b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
781b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    @Override
791b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    public void writeToParcel(Parcel dest, int flags) {
801b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        dest.writeLong(mValue);
811b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    }
821b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
831b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    public static final Parcelable.Creator<ObservableLong> CREATOR
841b86fe063badb5f28c467ade39be0f4008688947Andreas Huber            = new Parcelable.Creator<ObservableLong>() {
851b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
861b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        @Override
871b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        public ObservableLong createFromParcel(Parcel source) {
881b86fe063badb5f28c467ade39be0f4008688947Andreas Huber            return new ObservableLong(source.readLong());
891b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        }
901b86fe063badb5f28c467ade39be0f4008688947Andreas Huber
911b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        @Override
921b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        public ObservableLong[] newArray(int size) {
931b86fe063badb5f28c467ade39be0f4008688947Andreas Huber            return new ObservableLong[size];
941b86fe063badb5f28c467ade39be0f4008688947Andreas Huber        }
951b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    };
961b86fe063badb5f28c467ade39be0f4008688947Andreas Huber}
971b86fe063badb5f28c467ade39be0f4008688947Andreas Huber