Cómo implementar parcelable para Lista <Long>
Estoy tratando de pasar una lista en mi hacer parcelable:
public class MetaDados implements Parcelable { private List<Long> sizeImages; public MetaDados(List<Long> sizeImages){ this.sizeImages = sizeImages; } public List<Long> getSizeImages() { return sizeImages; } public void setSizeImages(List<Long> sizeImages) { this.sizeImages = sizeImages; } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeList(sizeImages); } public static final Parcelable.Creator<MetaDados> CREATOR = new Parcelable.Creator<MetaDados>() { @Override public MetaDados createFromParcel(Parcel in) { return new MetaDados(in); } @Override public MetaDados[] newArray(int size) { return new MetaDados[size]; } }; private MetaDados(Parcel in) { //HERE IS THE PROBLEM, I'VE tried this: sizeImages = in.readList(sizeImages, Long.class.getClassLoader()); //but what i got: Type mismatch: cannot convert from void to List<Long> } }
Prueba esto en su lugar:
sizeImages = new ArrayList<Long>(); // or any other type of List in.readList(sizeImages, null);
La documentación de Parcel.readList
de Parcel.readList
dice:
Leer en un objeto List existente de la parcela
Y por lo tanto, es necesario crear primero la List
.