2014-03-07 41 views
1

你好,我需要从一个活动发送列表到另一个,我发现方法在包裹 readTypedList发送列表位的AMD写TypedList 我writethem像在parcelable

 parcel.writeTypedList(busImages); 

,并尝试像

调用
 in.readTypedList(busImages,Bitmap.Creator); 

但在第二个参数Bitmap.Creator中有错误,我需要创建自己的创建者还是如何解决这个问题? 类代码:

public class ExtendBusModel extends BusModelParcelable { 
private List<Bitmap> busImages; 
private String Country; 

public ExtendBusModel(BusModelParcelable model, List<Bitmap> busImages, String country) { 
    super(model, model.getCountOfPlaces(),model.getTransportClass()); 
    this.busImages = busImages; 
    Country = country; 
} 

protected ExtendBusModel(Parcel in) { 
    super(in); 
    Log.d("read parsel buses", TestTags.TAG1); 
    // in.readList(busImages,List.class.getClassLoader()); 
    in.readTypedList(busImages,Bitmap.Creator); 
    Log.d("read parcel coutry",TestTags.TAG1); 
    Country = in.readString(); 
    Log.d("done read",TestTags.TAG1); 
    // super(in); 
} 

@Override 
public void writeToParcel(Parcel parcel, int i) { 
    super.writeToParcel(parcel, i); 
    //parcel.writeList(busImages); 
    parcel.writeTypedList(busImages); 
    parcel.writeString(Country); 
} 

public static final Creator<ExtendBusModel> CREATOR = new Creator<ExtendBusModel>() { 

    @Override 
    public ExtendBusModel createFromParcel(Parcel in) { 
     return new ExtendBusModel(in); 
    } 

    @Override 
    public ExtendBusModel[] newArray(int size) { 
     return new ExtendBusModel[size]; 
    } 
}; 

public List<Bitmap> getBusImages() { 
    if(busImages == null) 
     return new ArrayList<Bitmap>(); 
    return busImages; 
} 

public void setBusImages(List<Bitmap> busImages) { 
    this.busImages = busImages; 
} 

public String getCountry() { 
    return Country; 
} 

public void setCountry(String country) { 
    Country = country; 
} 

}

+0

请发布完整的课程代码,它实现了'Parcalable'。 –

+0

@HamidShatu我贴吧 – Abbath

+0

@Clay位图对象 – Abbath

回答

0

撰写您CREATOR如下......这可能是解决你的问题。

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 
    public ExtendBusModel createFromParcel(Parcel in) { 
     return new ExtendBusModel(in); 
    } 

    public ExtendBusModel[] newArray(int size) { 
     new ExtendBusModel[size]; 
    } 
}; 
+0

parcel.writeParcelable(busImages,flags);包裹canot中出现错误 – Abbath

+0

@Abbath ...查看我更新的答案。 –