ParcelableSparseArray.java revision 62ab25d71ccfa775a8bd2add7b41277bc4e14bbc
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; 2162ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banesimport android.support.v4.os.ParcelableCompat; 2262ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banesimport android.support.v4.os.ParcelableCompatCreatorCallbacks; 2336d347c02fa8da71ccd69634484be8156fa0085bYuichi Arakiimport android.util.SparseArray; 2436d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 2536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki/** 2636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki * @hide 2736d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki */ 2836d347c02fa8da71ccd69634484be8156fa0085bYuichi Arakipublic class ParcelableSparseArray extends SparseArray<Parcelable> implements Parcelable { 2936d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 3036d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki public ParcelableSparseArray() { 3136d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki super(); 3236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 3336d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 3462ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes public ParcelableSparseArray(Parcel source, ClassLoader loader) { 3536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki super(); 3636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki int size = source.readInt(); 3736d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki int[] keys = new int[size]; 3836d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki source.readIntArray(keys); 3962ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes Parcelable[] values = source.readParcelableArray(loader); 4036d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki for (int i = 0; i < size; ++i) { 4136d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki put(keys[i], values[i]); 4236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 4336d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 4436d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 4536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki @Override 4636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki public int describeContents() { 4736d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki return 0; 4836d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 4936d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 5036d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki @Override 5136d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki public void writeToParcel(Parcel parcel, int flags) { 5236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki int size = size(); 5336d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki int[] keys = new int[size]; 5436d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki Parcelable[] values = new Parcelable[size]; 5536d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki for (int i = 0; i < size; ++i) { 5636d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki keys[i] = keyAt(i); 5736d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki values[i] = valueAt(i); 5836d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 5936d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki parcel.writeInt(size); 6036d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki parcel.writeIntArray(keys); 6136d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki parcel.writeParcelableArray(values, flags); 6236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki } 6336d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 6462ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes public static final Parcelable.Creator<ParcelableSparseArray> CREATOR = 6562ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes ParcelableCompat 6662ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes .newCreator(new ParcelableCompatCreatorCallbacks<ParcelableSparseArray>() { 6762ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes @Override 6862ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes public ParcelableSparseArray createFromParcel(Parcel source, 6962ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes ClassLoader loader) { 7062ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes return new ParcelableSparseArray(source, loader); 7162ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes } 7236d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki 7362ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes @Override 7462ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes public ParcelableSparseArray[] newArray(int size) { 7562ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes return new ParcelableSparseArray[size]; 7662ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes } 7762ab25d71ccfa775a8bd2add7b41277bc4e14bbcChris Banes }); 7836d347c02fa8da71ccd69634484be8156fa0085bYuichi Araki} 79