gpt4 book ai didi

java - 将 Parcelable 与带有 Hashmap 的对象一起使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:58 25 4
gpt4 key购买 nike

我有一个对象数组列表,存储在一个扩展 intentService 的类中。它的对象实例变量是:

int id;
String name;
HashMap<Long, Double> historicFeedData

我希望能够将此 arrayList 传递回 Activity。我读过 Parcelable 是当你想将对象从服务传递到 Activity 时的方法。我写入包裹的方法如下所示:

public void writeToParcel(Parcel out, int flags) {
out.writeInt(id);
out.writeString(name);
dest.writeMap(historicFeedData);
}

不过,我不确定如何从包裹中读回散列图? This question建议使用 Bundle,但我不确定它们是什么意思。非常感谢任何帮助。

最佳答案

如果您正在实现 Parcelable你需要有一个名为 CREATOR 的静态 Parcelable.Creator 字段来创建你的对象 - 请参阅 doco RE createFromParcel()

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

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

然后在采用 Parcel 的构造函数中,您需要以相同的顺序读取您编写的字段。

Parcel 有一个名为 readMap() 的方法。请注意,您需要为 HashMap 中的对象类型传递一个类加载器。由于您存储的是 double ,因此它也可以与作为 ClassLoader 传递的 null 一起使用。像...

in.readMap(historicFeedData, Double.class.getClassLoader());

关于java - 将 Parcelable 与带有 Hashmap 的对象一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18807081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com