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