2013-04-02 61 views
7

:Listesi için parcelable uygulamak için nasıl parcelable yaptıklarının genelinde bir listesi geçmesine çalışıyorum <Long>

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> 
} 
} 

cevap

15

yerine bu deneyin:

sizeImages = new ArrayList<Long>(); // or any other type of List 
in.readList(sizeImages, null); 

Android documentation for Parcel.readList diyor ki:

Varolan bir List nesnesine

numaralı telefondan okuma

ve bu nedenle, önce List'u oluşturmanız gerekir.