Home | History | Annotate | Download | only in data
      1 /*
      2  * Copyright (C) 2016 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 com.android.tv.data;
     18 
     19 import android.os.Parcel;
     20 import android.os.Parcelable;
     21 import java.util.ArrayList;
     22 import java.util.Collection;
     23 import java.util.List;
     24 
     25 /** A convenience class for the list of {@link Parcelable}s. */
     26 public final class ParcelableList<T extends Parcelable> implements Parcelable {
     27     /** Create instance from {@link Parcel}. */
     28     public static ParcelableList fromParcel(Parcel in) {
     29         ParcelableList list = new ParcelableList();
     30         int length = in.readInt();
     31         if (length > 0) {
     32             for (int i = 0; i < length; ++i) {
     33                 list.mList.add(in.readParcelable(Thread.currentThread().getContextClassLoader()));
     34             }
     35         }
     36         return list;
     37     }
     38 
     39     /** A creator for {@link ParcelableList}. */
     40     public static final Creator<ParcelableList> CREATOR =
     41             new Creator<ParcelableList>() {
     42                 @Override
     43                 public ParcelableList createFromParcel(Parcel in) {
     44                     return ParcelableList.fromParcel(in);
     45                 }
     46 
     47                 @Override
     48                 public ParcelableList[] newArray(int size) {
     49                     return new ParcelableList[size];
     50                 }
     51             };
     52 
     53     private final List<T> mList = new ArrayList<>();
     54 
     55     private ParcelableList() {}
     56 
     57     public ParcelableList(Collection<T> initialList) {
     58         mList.addAll(initialList);
     59     }
     60 
     61     /** Returns the list. */
     62     public List<T> getList() {
     63         return new ArrayList<T>(mList);
     64     }
     65 
     66     @Override
     67     public int describeContents() {
     68         return 0;
     69     }
     70 
     71     @Override
     72     public void writeToParcel(Parcel out, int paramInt) {
     73         out.writeInt(mList.size());
     74         for (T data : mList) {
     75             out.writeParcelable(data, 0);
     76         }
     77     }
     78 }
     79