具有自定义对象列表的Parcelable类

时间:2015-12-01 10:02:12

标签: android inner-classes parcelable

我有一个具有内部类的Custom对象,整个项目需要是Parcelable,

public class FechasReservasZonas implements Parcelable {

public String hora;
public List<Zona> listaZonas;


public FechasReservasZonas(){};
public FechasReservasZonas(Parcel in){readFromParcel(in);};
@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {

        dest.writeString(hora);
        dest.writeList(listaZonas);
}

public void readFromParcel(Parcel in){
    hora = in.readString();
    in.readList(listaZonas,Zona.class.getClassLoader());
}

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

    public FechasReservasZonas[] newArray(int size) {
        return new FechasReservasZonas[size];
    }
};


public class Zona implements Serializable{

    public int IDZona;
    public String NombreZona;

}

}

它没有给出任何错误,但当我尝试将其作为ParcelableArray时,它会给我一个错误

 public static ReservasCuadranteFragment newInstance(ArrayList<FechasReservasZonas> fechas,String nombre) {
    ReservasCuadranteFragment fragment = new ReservasCuadranteFragment();
    Bundle args = new Bundle();

    // THIS LINE GIVE ERROR
    args.putParcelableArray(ARG_PARAM1, fechas);


    args.putString(ARG_PARAM2, nombre);
    fragment.setArguments(args);
    return fragment;
}

错误:

Error:(49, 45) error: incompatible types: ArrayList<FechasReservasZonas> cannot be converted to Parcelable[]

1 个答案:

答案 0 :(得分:4)

这是因为fechas是一个ArrayList而不是FechasReservasZonas的数组。在这种情况下,您应该使用

putParcelableArrayList代替putParcelableArray

Here您可以找到文档