我有一个字符串的通用映射(键,值),并且此字段是Bean的一部分,我需要将其包裹。
因此,我可以使用Parcel#writeMap方法。 API文档说:
因此,我可以遍历 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);
}
}
在我的应用程序中,键在 map 中的顺序很重要。我使用的是
LinkedHashMap
来保留顺序,并以此方式确保从Parcel
中提取键后,键将以相同的顺序出现。关于android - 如何以一种聪明的方式将Java.util.Map写入包裹?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8254654/