136d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki/* 236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * Copyright (C) 2015 The Android Open Source Project 336d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * 436d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * Licensed under the Apache License, Version 2.0 (the "License"); 536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * you may not use this file except in compliance with the License. 636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * You may obtain a copy of the License at 736d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * 836d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * http://www.apache.org/licenses/LICENSE-2.0 936d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * 1036d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * Unless required by applicable law or agreed to in writing, software 1136d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * distributed under the License is distributed on an "AS IS" BASIS, 1236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1336d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * See the License for the specific language governing permissions and 1436d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * limitations under the License. 1536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki */ 1636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 1736d347c02fa8da71ccd69634484be8156fa0085bYuichi Arakipackage android.support.design.internal; 1836d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 1936d347c02fa8da71ccd69634484be8156fa0085bYuichi Arakiimport android.os.Parcel; 2036d347c02fa8da71ccd69634484be8156fa0085bYuichi Arakiimport android.os.Parcelable; 21c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viveretteimport android.support.annotation.RestrictTo; 2262ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banesimport android.support.v4.os.ParcelableCompat; 2362ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banesimport android.support.v4.os.ParcelableCompatCreatorCallbacks; 2436d347c02fa8da71ccd69634484be8156fa0085bYuichi Arakiimport android.util.SparseArray; 2536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 26c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viveretteimport static android.support.annotation.RestrictTo.Scope.GROUP_ID; 27c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viverette 2836d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki/** 2936d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * @hide 3036d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki */ 31c39d9c75590eca86a5e7e32a8824ba04a0d42e9bAlan Viverette@RestrictTo(GROUP_ID) 3236d347c02fa8da71ccd69634484be8156fa0085bYuichi Arakipublic class ParcelableSparseArray extends SparseArray<Parcelable> implements Parcelable { 3336d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 3436d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki public ParcelableSparseArray() { 3536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki super(); 3636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 3736d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 3862ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes public ParcelableSparseArray(Parcel source, ClassLoader loader) { 3936d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki super(); 4036d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki int size = source.readInt(); 4136d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki int[] keys = new int[size]; 4236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki source.readIntArray(keys); 4362ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes Parcelable[] values = source.readParcelableArray(loader); 4436d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki for (int i = 0; i < size; ++i) { 4536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki put(keys[i], values[i]); 4636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 4736d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 4836d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 4936d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki @Override 5036d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki public int describeContents() { 5136d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki return 0; 5236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 5336d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 5436d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki @Override 5536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki public void writeToParcel(Parcel parcel, int flags) { 5636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki int size = size(); 5736d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki int[] keys = new int[size]; 5836d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki Parcelable[] values = new Parcelable[size]; 5936d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki for (int i = 0; i < size; ++i) { 6036d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki keys[i] = keyAt(i); 6136d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki values[i] = valueAt(i); 6236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 6336d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki parcel.writeInt(size); 6436d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki parcel.writeIntArray(keys); 6536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki parcel.writeParcelableArray(values, flags); 6636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 6736d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 6862ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes public static final Parcelable.Creator<ParcelableSparseArray> CREATOR = 6962ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes ParcelableCompat 7062ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes .newCreator(new ParcelableCompatCreatorCallbacks<ParcelableSparseArray>() { 7162ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes @Override 7262ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes public ParcelableSparseArray createFromParcel(Parcel source, 7362ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes ClassLoader loader) { 7462ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes return new ParcelableSparseArray(source, loader); 7562ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes } 7636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 7762ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes @Override 7862ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes public ParcelableSparseArray[] newArray(int size) { 7962ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes return new ParcelableSparseArray[size]; 8062ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes } 8162ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes }); 8236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki} 83