我有一个字符串的通用映射(键,值),并且此字段是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/

10-10 13:57