r1k*_*4r2 2 android hashmap hashset parcelable
我正在android中实现一个应用程序,我需要让我的objets parcelables在活动之间移动.我在服务器中使用hibernate,所以我的类将hashsets作为属性,我不知道如何包裹.
这是我的代码和我的尝试...但我不知道它是否正常,我不知道写写包裹.另外我想知道我是否为DATE和我的其他objets作为属性做得很好
public class Incidencia implements Parcelable {
// Atributos
private String id_incidencia;
private String estado;
private double latitud;
private double longitud;
private Date fecha_creacion;
private Date fecha_cierre;
private Puesto puesto;
private SubTipo subtipo;
private Set<iTarea> iTareas = new HashSet<iTarea>();
// Constructores
public Incidencia() {}
public Incidencia(String id, String est, double lat, double lon, Date f_cre, Date f_cie, Puesto pue, SubTipo sub, Set<iTarea> iTa) {
this.id_incidencia = id;
this.estado = est;
this.latitud = lat;
this.longitud = lon;
this.fecha_creacion = f_cre;
this.fecha_cierre = f_cie;
this.puesto = pue;
this.subtipo = sub;
this.iTareas = iTa;
}
// Necesarios para que sea Parcelable
public Incidencia(Parcel in) {
this.id_incidencia = in.readString();
this.estado = in.readString();
this.latitud = in.readDouble();
this.longitud = in.readDouble();
this.fecha_creacion = new Date(in.readLong());
this.fecha_cierre = new Date(in.readLong());
this.puesto = (Puesto)in.readParcelable(Puesto.class.getClassLoader());
this.subtipo = (SubTipo)in.readParcelable(SubTipo.class.getClassLoader());
this.iTareas = (Set<iTarea>) in.readHashMap(iTarea.class.getClassLoader());
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.getId_incidencia());
dest.writeString(this.getEstado());
dest.writeDouble(this.getLatitud());
dest.writeDouble(this.getLongitud());
dest.writeLong(this.getFecha_creacion().getTime());
dest.writeLong(this.getFecha_cierre().getTime());
dest.writeParcelable((Parcelable) this.puesto, flags);
dest.writeParcelable((Parcelable) this.subtipo, flags);
}
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<Incidencia> CREATOR = new Parcelable.Creator<Incidencia>() {
public Incidencia createFromParcel(Parcel in) {
return new Incidencia(in);
}
public Incidencia[] newArray(int size) {
return new Incidencia[size];
}
};
Run Code Online (Sandbox Code Playgroud)
eba*_*hea 12
我相当肯定它不会起作用,主要是因为a Set不是Map.更好的方法是使用Set.toArray方法从集合中获取对象数组,并使用Parcel.writeTypedArray它将其写入parcel.然后,您可以在重新创建对象时读取数组并自行填充Set.这需要你的iTarea类实现Parcelable,但它是一个更好的解决方案,然后尝试传递一个HashSet关闭作为HashMap.
顺便说一句,你的其他物品和日期应该没问题.
| 归档时间: |
|
| 查看次数: |
4946 次 |
| 最近记录: |