gpt4 book ai didi

android - 如何以智能的方式将 Java.util.Map 写入包裹?

转载 作者:IT老高 更新时间:2023-10-28 13:20:30 25 4
gpt4 key购买 nike

我有一个字符串(键、值)的通用映射,这个字段是我需要可打包的 Bean 的一部分。所以,我可以使用 Parcel#writeMap 方法。 API 文档说:

Please use writeBundle(Bundle) instead. Flattens a Map into the parcel at the current dataPosition(), growing dataCapacity() if needed. The Map keys must be String objects. The Map values are written using writeValue(Object) and must follow the specification there. It is strongly recommended to use writeBundle(Bundle) instead of this method, since the Bundle class provides a type-safe API that allows you to avoid mysterious type errors at the point of marshalling.

因此,我可以遍历 Map 中的每个条目,并将其放入 Bundle,但我仍在寻找更智能的方法。我缺少 Android SDK 中的任何方法吗?

目前我是这样做的:

final Bundle bundle = new Bundle();
final Iterator<Entry<String, String>> iter = links.entrySet().iterator();
while(iter.hasNext())
{
final Entry<String, String> entry =iter.next();
bundle.putString(entry.getKey(), entry.getValue());
}
parcel.writeBundle(bundle);

最佳答案

我最终做了一些不同的事情。它遵循处理 Parcelables 所期望的模式,因此应该很熟悉。

public void writeToParcel(Parcel out, int flags){
out.writeInt(map.size());
for(Map.Entry<String,String> entry : map.entrySet()){
out.writeString(entry.getKey());
out.writeString(entry.getValue());
}
}

private MyParcelable(Parcel in){
//initialize your map before
int size = in.readInt();
for(int i = 0; i < size; i++){
String key = in.readString();
String value = in.readString();
map.put(key,value);
}
}

在我的应用程序中,映射中键的顺序很重要。我使用的是 LinkedHashMap保留顺序并以这种方式执行此操作可确保从 Parcel 中提取 key 后以相同的顺序出现。

关于android - 如何以智能的方式将 Java.util.Map 写入包裹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8254654/

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