package com.neuron.trafikanten.dataSets; import java.util.ArrayList; import java.util.HashMap; import java.util.Set; import android.os.Parcel; import android.os.Parcelable; /* * Parcelable arraylist for storing devi data. */ public class RouteDeviData implements Parcelable { public HashMap<String, ArrayList<DeviData> > items = new HashMap<String, ArrayList<DeviData> >(); public final static String PARCELABLE = "RouteDeviData"; public RouteDeviData() { } public String getDeviKey(int stationId, int lineId) { /* * TODO Performance, come up with a better way of id'ing the different values, using a string for this is dumb. */ return "" + lineId + "-" + stationId; } /* * @see android.os.Parcelable */ @Override public int describeContents() { return 0; } /* * Function for reading the parcel */ public RouteDeviData(Parcel in) { int size = in.readInt(); while (size > 0) { RouteDeviDataItem item = in.readParcelable(RouteDeviDataItem.class.getClassLoader()); items.put(item.deviKey, item.items); size--; } } /* * Writing current data to parcel. * @see android.os.Parcelable#writeToParcel(android.os.Parcel, int) */ @Override public void writeToParcel(Parcel out, int flags) { Set<String> keys = items.keySet(); out.writeInt(keys.size()); for (String key : keys) { RouteDeviDataItem item = new RouteDeviDataItem(key, items.get(key)); out.writeParcelable(item, 0); } } /* * Used for bundle.getParcel */ public static final Parcelable.Creator<RouteDeviData> CREATOR = new Parcelable.Creator<RouteDeviData>() { public RouteDeviData createFromParcel(Parcel in) { return new RouteDeviData(in); } public RouteDeviData[] newArray(int size) { return new RouteDeviData[size]; } }; } class RouteDeviDataItem implements Parcelable { public String deviKey; public ArrayList<DeviData> items; public RouteDeviDataItem(String deviKey, ArrayList<DeviData> items) { this.deviKey = deviKey; this.items = items; } /* * @see android.os.Parcelable */ @Override public int describeContents() { return 0; } /* * Function for reading the parcel */ public RouteDeviDataItem(Parcel in) { deviKey = in.readString(); items = new ArrayList<DeviData>(); in.readList(items, DeviData.class.getClassLoader()); } /* * Writing current data to parcel. * @see android.os.Parcelable#writeToParcel(android.os.Parcel, int) */ @Override public void writeToParcel(Parcel out, int flags) { out.writeString(deviKey); out.writeList(items); } /* * Used for bundle.getParcel */ public static final Parcelable.Creator<RouteDeviDataItem> CREATOR = new Parcelable.Creator<RouteDeviDataItem>() { public RouteDeviDataItem createFromParcel(Parcel in) { return new RouteDeviDataItem(in); } public RouteDeviDataItem[] newArray(int size) { return new RouteDeviDataItem[size]; } }; }